程式碼示例:
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
float s;
int b,x,n,c,i,j,d,l,a[5000];
cout<<endl<<"請輸入精確位數:";
cin>>x;
for(s=0,n=1;n<=5000;n++)//累加確定項數.
s=s+log10((2*n+1)/n);
if(s>x+1)
break;
}
for(i=0;i<=x+5;i++)
a[i]=0;
for(c=1,j=n;j>=1;j--)//按公式分佈計算。
d=2*j+1;
for(i=0;i<=x+4;i++)//各位實施除2j+1.
a[i]=c/d;
c=(c%d)*10+a[i+1];
a[x+5]=c/d;
for(b=0,i=x+5;i>=0;i--)//各位實施乘j
a[i]=a[i]*j+b;
b=a[i]/10;
a[i]=a[i]%10;
a[0]=a[0]+1;
c=a[0];//整數加1.
for(b=0,i=x+5;i>=0;i--)//按公式各位乘2
a[i]=a[i]*2+b;
cout<<endl<<"PI="<<a[0]<<".";//諸位輸出計算結果。
for(l=10,i=1;i<=x;i++)
cout<<a[i];
l++;
if(l%10==0)
cout<<" ";
if(l%50==0)
cout<<endl;
return 0;
程式碼示例:
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
float s;
int b,x,n,c,i,j,d,l,a[5000];
cout<<endl<<"請輸入精確位數:";
cin>>x;
for(s=0,n=1;n<=5000;n++)//累加確定項數.
{
s=s+log10((2*n+1)/n);
if(s>x+1)
break;
}
for(i=0;i<=x+5;i++)
a[i]=0;
for(c=1,j=n;j>=1;j--)//按公式分佈計算。
{
d=2*j+1;
for(i=0;i<=x+4;i++)//各位實施除2j+1.
{
a[i]=c/d;
c=(c%d)*10+a[i+1];
}
a[x+5]=c/d;
for(b=0,i=x+5;i>=0;i--)//各位實施乘j
{
a[i]=a[i]*j+b;
b=a[i]/10;
a[i]=a[i]%10;
}
a[0]=a[0]+1;
c=a[0];//整數加1.
}
for(b=0,i=x+5;i>=0;i--)//按公式各位乘2
{
a[i]=a[i]*2+b;
b=a[i]/10;
a[i]=a[i]%10;
}
cout<<endl<<"PI="<<a[0]<<".";//諸位輸出計算結果。
for(l=10,i=1;i<=x;i++)
{
cout<<a[i];
l++;
if(l%10==0)
cout<<" ";
if(l%50==0)
cout<<endl;
}
cout<<endl;
return 0;
}