2015-10-31 42 views
0

我看到網站上的圓周率計算的算法,它看起來像:無法理解這樣的PI計算算法

#include <stdio.h> 
int a[52514],b,c=52514,d,e,f=1e4,g,h; 
main(){ 
for(;b=c-=14;h=printf("%04d",e+d/f)){ 
    for(e=d%=f;g=--b*2;d/=g){ 
     d=d*b+f*(h?a[b]:f/5); 
     a[b]=d%--g;} 
    } 
} 

它是這個代碼是在此基礎上擴展,但我不相對明白說代碼和擴展之間。

pi = sigma((i!)^ 2 * 2 ^(i + 1))/(2i + 1)! (i = 0到無限)

你能幫我解釋一下嗎?謝謝。

+2

拋出一個或兩個宏,如果還沒有IOCCC獲勝者。 – Plopperzz

+0

@Plopperzz宏是什麼意思?我該怎麼做? –

+1

看看這篇文章[這裏](http://stackoverflow.com/questions/20287513/can-anyone-make-heads-or-tales-of-this-spigot-algorithm-code-pitiny-c),其中還提到了[Spigot算法](https://en.wikipedia.org/wiki/Spigot_algorithm)。有趣的是,我是該職位的第314位觀衆。 – Plopperzz

回答

1
pi+3=sigma((m!)^2 * 2^m * m/(2*m)!) (m=1 to infinite). 

算法的Pflouffe使用它。

+0

但我仍不明白爲什麼這段代碼等於擴展。 –