圆周率的计算算法一直以来都被用于测试计算机的性能还有编程技能。这是某个不知名的大神写的一个程序,仅仅几行代码瞬间计算出圆周率小数点后800位。(头条代码不能缩进,所以还是用 ---- 代替缩进)
#include
#include
int a=10000, b, c=2800, d, e, f[2801], g;
int main() {
----for(;b-c;)
--------f[b++]=a/5;
----for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a,Sleep(80))
--------for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b);
----return 0;
}
我是看不懂这个代码,网上有对其的分析:
1.使用的是这个公式
pi = 2 + 1/3 * (2 + 2/5 * (2 + 3/7 * (2 + ... (2 + k/2k+1 * (2 + ... ))...)))
(允许我懵逼3秒钟)
2.要想精确计算出PI,就需要将上面那个公式迭代无数次,并且要保证每个分数都是精确的,C语言是不能实现了,毕竟double型有精度限制。这里只能迭代有限的次数,保证让每个分数都精确。这里就只迭代了2800次(c=2800)。
3.输出的时候也是每4位一起输出,共输出了200段。