圆周率 计算 C代码

2022-05-20 22:39:16   第一文档网     [ 字体: ] [ 阅读: ] [ 文档下载 ]
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。下载word有问题请添加QQ:admin处理,感谢您的支持与谅解。点击这里给我发消息

#第一文档网# 导语】以下是®第一文档网的小编为您整理的《圆周率 计算 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.dywdw.cn/7c7d06c7d5bbfd0a795673c5.html

相关推荐
推荐阅读