圆周率 计算 C代码

2022-05-20 22:39:16   文档大全网     [ 字体: ] [ 阅读: ]

#文档大全网# 导语】以下是®文档大全网的小编为您整理的《圆周率 计算 C代码》,欢迎阅读!
圆周率,代码,计算
#include #include #include #define N 30015

using namespace std;

void mult (int *a,intb,int *s) {

for (int i=N,c=0;i>=0;i--) {

int y=(*(a+i))*b+c; c=y/10;

*(s+i)=y%10; } }

void divi (int *a,intb,int *s) {

for (int i=0,c=0;i<=N;i++) {

int y=(*(a+i))+c*10; c=y%b; *(s+i)=y/b; } }

void incr(int *a,int *b,int *s) {

for (int i=N,c=0;i>=0;i--) {

int y=(*(a+i))+(*(b+i))+c; c=y/10; *(s+i)=y%10; } }

booleqs(int *a,int *b) { int i=0;

while (((*(a+i))==(*(b+i)))&&(i<=N)) i++; return i>N; }


int main(intargc, char *argv[]) {

cout<< "正在计算 . . . (0%)";

intlpi[N+1],lls[N+1],lsl[N+1],lp[N+1];

int *pi=lpi,*ls=lls,*sl=lsl,*p=lp;

for (int i=0;i<=N;i++)*(pi+i)=*(ls+i)=*(sl+i)=*(p+i)=0; memset(pi,0,sizeof(pi)); memset(ls,0,sizeof(ls)); memset(sl,0,sizeof(sl)); memset(p,0,sizeof(p)); *pi=*ls=*sl=1;

for (int i=1;true;i++) {

mult(ls,i,sl); divi(sl,2*i+1,ls); incr(pi,ls,p); if (eqs(pi,p)) {

cout<< "\b\b\b\b100%)\n"; break; } int *t; t=p; p=pi;

pi=t;

//if (i%1000==0) cout<< i << " "; if(i%1000 == 0) {

/*cout<< i/1000 << "% "; if(i%5000 == 0) cout< if(i/1000 < 11) {

cout<< "\b\b\b"; } else {

cout<< "\b\b\b\b"; }

cout<< i/1000 << "%)";


}

}

cout<

cout<< "计算完成\n正在保存 . . .\n"; mult(p,2,pi);

ofstreamfout("pi.txt"); fout<< *pi << ".";

for (int i=1;i <= N - 15;i++) {

fout<< *(pi+i);

if (i%10==0) fout<< " "; if (i%80==0) fout< }

cout<< "保存完成\n"; cout<< "按回车键退出"; cin.peek();

return EXIT_SUCCESS; }


本文来源:https://www.wddqxz.cn/7c7d06c7d5bbfd0a795673c5.html

相关推荐