计算圆周率的C++程序(30000位)
2010-11-09 08:28
302 查看
//计算圆周率的C++程序(30000位)
#include <stdlib.h>
#include <math.h>
#include <memory.h>
#define N 10000
//using namespace std;
void mult(int *a,int b,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,int b,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;
}
}
bool eqs(int *a,int *b)
{ int i=0;
while( a[i]==b[i] && i<=N )
i++;
return i>N;
}
void print(int *pi)
{ printf("%1d./n",*pi);
for(int i=1;i<=N;i++)
{ printf("%d",pi[i]);
if (i%10==0)
printf(" ");
if (i%70==0)
printf("/n");
}
};
//int main(int argc, char *argv[])
void test()
{ int lpi[N+1],lls[N+1],lsl[N+1],lp[N+1];
int *pi=lpi,*ls=lls,*sl=lsl,*p=lp;
int i;
memset(pi,0,sizeof(lpi));
memset(ls,0,sizeof(lls));
memset(sl,0,sizeof(lsl));
memset(p,0,sizeof(lp));
*pi=*ls=*sl=1;
for(i=1;i<N;i++)
{ mult(ls,i,sl);
divi(sl,2*i+1,ls);
incr(pi,ls,p);
//if(eqs(pi,p)) break;
int *t;
t=p;
p=pi;
pi=t;
print(pi);
}
mult(p,2,pi);
print(pi);
printf("/n/nSUCCESS!/n");
//return EXIT_SUCCESS;
}
#include <stdlib.h>
#include <math.h>
#include <memory.h>
#define N 10000
//using namespace std;
void mult(int *a,int b,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,int b,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;
}
}
bool eqs(int *a,int *b)
{ int i=0;
while( a[i]==b[i] && i<=N )
i++;
return i>N;
}
void print(int *pi)
{ printf("%1d./n",*pi);
for(int i=1;i<=N;i++)
{ printf("%d",pi[i]);
if (i%10==0)
printf(" ");
if (i%70==0)
printf("/n");
}
};
//int main(int argc, char *argv[])
void test()
{ int lpi[N+1],lls[N+1],lsl[N+1],lp[N+1];
int *pi=lpi,*ls=lls,*sl=lsl,*p=lp;
int i;
memset(pi,0,sizeof(lpi));
memset(ls,0,sizeof(lls));
memset(sl,0,sizeof(lsl));
memset(p,0,sizeof(lp));
*pi=*ls=*sl=1;
for(i=1;i<N;i++)
{ mult(ls,i,sl);
divi(sl,2*i+1,ls);
incr(pi,ls,p);
//if(eqs(pi,p)) break;
int *t;
t=p;
p=pi;
pi=t;
print(pi);
}
mult(p,2,pi);
print(pi);
printf("/n/nSUCCESS!/n");
//return EXIT_SUCCESS;
}
相关文章推荐
- C++ 计算程序的运行时间
- C++中如何计算程序运行的时间
- (c++)设圆半径r,圆柱高h 求圆周长C1、圆面积Sa、圆球表面积Sb、圆球体积Va、圆柱体积Vb。 用scanf输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。 PI=3
- 『转』C++中计算程序的运行时间
- 计算程序的运行时间(C++)
- 【c++程序】计算字符个数
- 从零开始学习c++之程序计算的简单应用
- [转]计算圆周率的程序
- 用C++编写递归函数GetPower(int x,int y)计算x的y次幂,在同一程序里中针对整型和实型实现两个重载的函数;在主程序中实现输入输出
- C++高精度计算程序执行时间
- C++程序内计算时间开销的方法举例
- c/c++日期时间的计算程序
- [转]c++中计算运行时间 clock(),clock_t程序
- c++ 计算程序运行时间
- C++练手小程序 整数幂的计算
- C++中程序时间的计算
- 如何在 C++ 程序中计算时间
- <C++>计算程序运行时间
- 计算圆周率的C#程序
- C++实现计算程序运行时间 高精度