#include 'stdio.h'long 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);} }你能看懂这4行代码在干什么吗?我来告诉你。
方法/步骤
1
这是一个计算圆周率的小程序。
2
公式: ∞ PI/2 = ∑ (n! / (2n+1)!!) n= 0 这个公式收敛很快,计算2800项就可以精确到小数点后800位。
3
代码解释: for(;b-c;)的意思时说当b=2800的时候退出循环。 C语言全局变量是静态存储,由系统缺省初始化为0。而局部变量声明部分,就是AUTO存储,都必须进行初始化。另外两个for则是对公式的实现。
4
故弄玄虚。不过,天才就是有故弄玄虚的资本。
5
翻译之后的代码:#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; }}
上一篇:天天酷跑炫飞模式UFO简介