运行程序,就会发现神奇的事情,能够精确到圆周率很多位,亲问一下,这是什么原理?
#include<stdio.h>
//2015.8.12
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);
}
这个比较出名的程序,三行语句求PI
按公式PI/2 = ∑ (n! / (2n+1)!!) 计算Pi
计算2800项就可以精确到小数点后800位
正常的写法
long b,c,d,e,f[2801];
void main()
{
for (int i = 0; i < 2800; i++) f[i] = 2000;
f[2800] = 0;
for (c = 2800; c > 0; c -= 14)
{
d = 0;
for (b = c; b > 0; b--)
{
d += f[b] * 10000;
f[b] = d % (2*b-1);
d /= (2*b-1);
if (b > 1)
d *= (b-1);
}
printf("%.4d", e + d / 10000);
e = d % 10000;
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答 2015-08-12
泰勒级数展开的结果