高分请教(求pi)

dot99 dot99 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我写的一个求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);
}
...全文
评论 6
收藏 已收藏
分享
返回顶部
dot99
数据结构与算法 33,026 成员 35,334 内容