回 帖 发 新 帖 刷新版面

主题:一个很牛的计算pi的c程序

#include <stdlib.h>  
#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);  
}  

计算结果:  
31415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185  

回复列表 (共115个回复)

71 楼

利害!!!   能不能给个解释??

72 楼

真的看不明白,楼主可不可以说出它的原理啊?还有程序还不够完美,可不可以计算出3.14……啊

73 楼

高手就是高手
看郁闷了
除了会认识字母外,其他的保密

74 楼

晕,数字又没规律,用来做什么的

75 楼

//
// 2005年5月25日
// 17:26:35
//
#include <stdlib.h>  
#include <stdio.h>  

long f[2801];  

main()
{  
    long a=10000;
    long b = 0;
    long c=2800;
    long d = 0;
    long e = 0;
    long g = 0;

    //for(;b-c;)
        //f[b++]=a/5;

    // 等价代码:
    for(b = 0;b<2800;b++)
        f[b]=2000;
    
    for(  ;g=c*2; )  
    {
        d=0;
        b=c;
        for( ;   d+=f[b]*a,  f[b]=d%--g,    d/=g--,   --b;   )
        {
             d*=b;
        }

        c-=14;
        printf("%.4d",e+d/a);
        e=d%a;
    }
    return 0;
}

76 楼

//
// 2005年5月25日
// 17:26:35
// 17:29:33
//
#include <stdlib.h>  
#include <stdio.h>  

long f[2801];

main()
{  
    long b = 0;
    long c=2800;
    long d = 0;
    long e = 0;
    long g = 0;

    for(b = 0;b<2800;b++)
        f[b]=2000;
    
    for(  ;g=c*2; )  
    {
        d=0;
        b=c;
        for( ;   d+=f[b]*10000,  f[b]=d%--g,    d/=g--,   --b;   )
        {
             d*=b;
        }
        c-=14;
        printf("%.4d",e+d/10000);
        e=d%10000;
    }
    return 0;
}

77 楼

//
// 2005年5月25日
// 17:26:35
// 17:29:33
//
#include <stdlib.h>  
#include <stdio.h>  

long f[2801];

main()
{  
    long b = 0;
    long c=2800;
    long d = 0;
    long e = 0;
    long g = 0;

    for(b = 0;b<2800;b++)
        f[b]=2000;
    
    for(  ;g=c*2; )  
    {
        d=0;
        b=c;
        c-=14;

        for( ;   d+=f[b]*10000,  f[b]=d%--g,    d/=g--,   --b;   )
        {
             d*=b;
        }

        // 取超过10000的数位
        printf("%.4d",e+d/10000);
        // 记录低于10000的数位
        e=d%10000;
    }
    return 0;
}

78 楼

//
// 2005年5月25日
// 17:26:35
// 17:29:33
// 17:51:52
//
#include <stdlib.h>  
#include <stdio.h>  

long f[2801];

main()
{  
    long b = 0;
    long c = 2800;
    long d = 0;
    long e = 0;
    long g = 0;

    for(b = 0;b<2800;b++)
        f[b]=2000;
    
    while(c)  
    {
        d = 0;
        b = c;
        g = 2*c;
        c-= 14;

        for( ; g--,  d+=f[b]*10000,  f[b]=d%g,  d/=g, g--,  --b;   )
        {
             d*=b;
        }

        // 取超过10000的数位
        printf("%.4d",e+d/10000);
        // 记录低于10000的数位
        e=d%10000;
    }
    return 0;
}

79 楼

//
// 2005年5月25日
// 17:26:35
// 17:29:33
// 17:51:52
// 17:59:52
//
#include <stdlib.h>  
#include <stdio.h>  

// long f[2801];
long f[2800];

main()
{  
    long b = 0;
    long c = 0;
    long d = 0;
    long e = 0;
    long g = 0;

    for(b = 0;b<2800;b++)
        f[b]=2000;
    
    for(c=2800; c; c-=14)  
    {
        d = 0;
        b = c;
        g = 2*c-1;
        
        for(;  d+=f[b]*10000,  f[b]=d%g,  d/=g, --b;   )
        {
             d *= b;
             g -= 2;
        }

        // 取超过10000的数位
        printf("%.4d",e+d/10000);
        // 记录低于10000的数位
        e=d%10000;
    }
    return 0;
}

80 楼

我看这个程序,是在凑数,反正PI后面的那么多位没几个人知道那是对的还是假的

我来回复

您尚未登录,请登录后再回复。点此登录或注册