• 全部
  • 问答

高分请教(求pi)

dot99 2001-07-25 12:03:20
我写的一个求pi的程式,请教一下怎么改进:)

循环10次精确到第6位
循环20次精确到第12位
循环10000次耗时 440ms

// pi.cpp
//算法:
//
//三角形的面积之和的极限=圆面积
//圆半径R=1, 弦长C, 弦垂线D
//分n次有2^n个三角形

#include

void
main()
{
const int N = 10000;
const double R = 1;
const double SQRT_2 = 1.4142135623731;
double D0 = 1/SQRT_2;
double C0 = SQRT_2;
double Dn, Cn, Db, Cb, Cb1;
double pi;
for (int i = 1; i <= N; i++) {
Cb = C0/2;
Db = R-D0;
Cn = sqrt(Cb*Cb + Db*Db);
Cb1 = Cn/2;
Dn = sqrt(R - Cb1*Cb1);
C0 = Cn;
D0 = Dn;
//_DEBUG_ pi = (2<<i) * Cn * Dn;
}
//pi = pi = (2<<N) * Cn * Dn; // 1/4圆
}

还请教一下,怎么输出结果?
还有:)请解释一下网易bbs中这个"外星人"的pi程式:) (算到800位)

#include
int a=10000, b, c=2800, d, e, f[2801], g;
main()
{
for(;b-c;)
f[b++]=a/5;
for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a)
for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b);
}
...全文
47 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
dot99 2001-07-31
唉还是给分吧
回复
林仪明 2001-07-28
gz
回复
dot99 2001-07-27
真的没有人解释那个"外星人"的pi程式吗?
回复
fish_autumn 2001-07-26
同意楼上,我试过一些公式,你用的差不多是最差的,也是根据泰勒公式得出的幂级数,效率差许多。
回复
dot99 2001-07-25
Arter()兄,怎么个来法?
回复
Arter 2001-07-25
我想:如果你要求Pi更多的位和运行的时间更短,那末,应该用收敛性强的公式!
回复
相关推荐
发帖
数据结构与算法
创建于2007-08-27

3.2w+

社区成员

数据结构与算法相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2001-07-25 12:03
社区公告
暂无公告