关于π的精确值计算
/*事先声明:本文是以log算法为基础,写出π的高精度计算程序,编译语言为C++,使用编辑器为DevC+,如有侵权请及时联系,会立即删除。在未经本人许可禁止用于商用,改写,感谢支持!*/
#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<<"欢迎您的验证,现在我们开始验证π的高精度的计算。"<<endl;
cout<<endl<<"请输入精确位数(x<=80000):";
cin>>x;
if(x<=80000){cout<<"输入有效,正在计算..." <<endl;
if(x==80000){cout<<"预计需要两分钟,请耐心等待"<<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;}