快好知 kuaihz

一段精确计算π的C程序

很多年前,大概二十多年前,在一本杂志上看到一段计算pai的程序。这段程序似乎是讽刺了C语言的可读性差,自由灵活到晦涩难懂,但编写的确实巧妙。仅用四行就计算了800位圆周率的精确值。

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("%.4ld",e+d/a),e=d%a)

for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b);scanf("%s");}

每次测试C语言编译器我都用这段程序,从turboC2.0开始,这学期指导毕业设计,因为要用C语言绘图,学生机器的操作系统版本高,装不上VC6.0,只好在云主机上装VS2019,但试用版只能用一个月,所占空间也太大,只好卸载。唉,操作系统、编译器,这些卡脖子的技术,人家一升级一换代,就得跟着改。昨天又装了wxDev C++编译器

下图,绿色下划线为计算公式,蓝色框内为此公式的普通计算方法,红色框内为精确计算方法,做运算是用了精确除法,就像我们手工计算除式一样。

普通计算运行结果:

pi=3.141592653589793

精确计算运行结果:

31415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185:

本站资源来自互联网,仅供学习,如有侵权,请通知删除,敬请谅解!
搜索建议:一段精确计算π的C程序  精确  精确词条  计算  计算词条  程序  程序词条  
观点

 弦论简史(四)

11.弦论简史(四)彼得·沃特  著左 芬   译第一次超弦理论革命 到了1983年,威滕开始对超弦理论兴趣大增。4月份...(展开)

观点

 将来的大学

我不是社会学家,是自然科学家。作为自然科学家,可以提出问题,加以证实或者证伪。我觉得这个提问的对象,也可以包括社会科学中涉及的问题。自然科学家有提问题的权利,当...(展开)