高分请教(求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);
}
...全文
105 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
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更多的位和运行的时间更短,那末,应该用收敛性强的公式!

33,027

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧