一個(gè)求圓周率的程序(c++)
#include<bits/stdc++.h>
using namespace std;
int main(void)
{
//freopen("圓周率.txt","w",stdout);
? ? int a[2]={956,80},b[2]={57121,25},i=0,j,k,p,q,r,s=2,t,u,v,N,M=10000;
? ? printf("這是一個(gè)求圓周率的程序\n那么,你想求到第幾位呢?\n輸入鍵:");
? ? cin>>N,N=N/4+3;
? ? long *pi=new long[N],*e=new long[N];
? ? while(i<N)
? ? ? ? pi[i++]=0;
? ? while(--s+1)
? ? {
? ? ? ? for(*e=a[k=s],i=N;--i;)
? ? ? ? ? ? e[i]=0;
? ? ? ? for(q=1;j=i-1,i<N;e[i]?0:++i,q+=2,k=!k)
? ? ? ? for(r=v=0;++j<N;pi[j]+=k?u:-u)
? ? ? ? {
? ? ? ? u=(t=v*M+(e[j]=(p=r*M+e[j])/b[s]))/q;
r=p%b[s];
v=t%q;
}
? ? }
? ? while(i--)
? ? {
? ? (pi[i]=(t=pi[i]+s)%M)<0?pi[i]+=M,s=t/M-1:s=t/M;
}
i=1;
cout<<"3.";
cout<<pi[i];
? ? for(;++i<N-2;)
printf("%d",pi[i]);
? ? delete []pi,delete []e;//,cin.ignore(),cin.ignore();
? ? return 0;
}