關(guān)于π的精確值計算
/*事先聲明:本文是以log算法為基礎(chǔ),寫出π的高精度計算程序,編譯語言為C++,使用編輯器為DevC+,如有侵權(quán)請及時聯(lián)系,會立即刪除。在未經(jīng)本人許可禁止用于商用,改寫,感謝支持!*/
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
int main(){
float s;int b,x,n,c,i,j,d,l,a[85000];
cout<<"歡迎您的驗證,現(xiàn)在我們開始驗證π的高精度的計算。"<<endl;
cout<<endl<<"請輸入精確位數(shù)(x<=80000):";
cin>>x;
if(x<=80000){cout<<"輸入有效,正在計算..." <<endl;
if(x==80000){cout<<"預(yù)計需要兩分鐘,請耐心等待"<<endl;}
for(s=0,n=1;n<=85000;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++){?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--){a[i]=a[i]*j+b;b=a[i]/10;a[i]=a[i]%10;}
a[0]=a[0]+1;
c=a[0];}
for(b=0,i=x+5;i>=0;i--){
a[i]=a[i]*2+b;b=a[i]/10;a[i]=a[i]%10;}
cout<<endl<<"π="<<a[0]<<".";
for(l=10,i=1;i<=x;i++){?
cout<<a[i];l++;
if(l%10==0){cout<<"? ?";}?
if(l%60==0){cout<<endl;}}cout<<endl;}
else{cout<<"(Runtime Error)";}
return 0;}