先上代码
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;}
运行的时候可能会有警告,像这样。
但是不用管,直接运行就行了
注意,一定要用 \(C\) 语言,不能用\(C++\)语言
然后是优化版
#include <stdio.h>
#define PI_NUM 100000 //要算到的位数
#define NUM (PI_NUM * 14 / 4)
#define int long long int
long long a[NUM + 1];
long long b = NUM;
long long c = NUM;
long long d = 0, e = 0;
int main(void)
{
for (long long i = 0; i < NUM + 1; i++)
{
a[i] = 2000;
}
while (c != 0)
{
b = c;
e = d % 10000;
d = e;
while (b != 0)
{
d = d * b + a[b] * 10000;
a[b] = d % (2 * b - 1);
d /= (2 * b - 1);
b--;
}
c -= 14;
printf("%04d", e + d / 10000);
}
return 0;
}
大概可以算到10多万位小数。
标签:15,int,000,NUM,long,10000,PI,define From: https://www.cnblogs.com/BadBadBad/p/PI.html