求圆周率?
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);
}
麻烦那位讲解以下?谢谢!
[解决办法]
改成了这样,应该看得明白程序了,但是还是没懂算法,大家帮忙看看
main()
{
long a=10000,b=0,c=2800,d=0,e=0,f[2801],g=0;
for(;b-c!=0;)
{
f[b++]=a/5;
}
for(;g=c*2;)
{
d=0;
for(b=c;b> 0;)
{
d+=f[b]*a;
f[b]=d%--g;
d/=g--;
--b;
if(b!=0)
{
d*=b;
}
}
c-=14;
printf( "%.4d ",e+d/a);
e=d%a;
}
}
[解决办法]
f(1)=1
f(n+1)=f(n)*n/(2*n+1)
PI/2=f(1)+f(2)+f(3)+.....+f(n) n-> 无穷大。