用c语言求出圆周率,这是一个神奇的程序。求解释?

运行程序,就会发现神奇的事情,能够精确到圆周率很多位,亲问一下,这是什么原理?
#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位

正常的写法

#include "stdio.h"
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
泰勒级数展开的结果

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网