⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 求pi的程序
💻 CPP
字号:
#include <iostream.h>
#include <iomanip.h>
#include <fstream.h>
#include <time.h>
#include "bignumber.h"

main()
{
	int n;
	cout<<"输入所需精度!";
	cin>>n;
	clock_t p=clock();
	int m=n/9+3;
	__int64 *a=new __int64[m];
	__int64 *b=new __int64[m];
	int i,j,t=0;
	for(i=0;i<m;i++){
		a[i]=b[i]=0;
	}
	a[m-1]=b[m-1]=2;
	for (i=1;;i++){
		multiply(b,i,m);
		divide(b,2*i+1,m);
		plus(a,b,m);
		t=0;
		for (j=0;j<m;j++)
			if (b[j]!=0){
				t=1;
				break;
			}
		if(t==0)break;
	}
	if (2*i+1>=1000000000)cerr<<"计算超出范围,数值可能不准确";
	ofstream file;
	file.open("1.txt");
	double q=(clock()-p)/(double)CLOCKS_PER_SEC;
	cout<<"运算时间:"<<q<<"秒"<<endl;
	file<<"运算时间:"<<q<<"秒"<<endl;
	cout<<"运算步数:"<<i<<endl;
	file<<"运算步数:"<<i<<endl;
	cout<<(long)a[m-1]<<'.';
	file<<(long)a[m-1]<<'.';
	for (i=m-2;i>=2;i--){
		cout<<setw(9)<<setfill('0')<<(long)a[i]<<' ';
		file<<setw(9)<<setfill('0')<<(long)a[i]<<' ';
	}
	cout<<endl;
	file<<endl;
	file.close ();
	return 0;
}
/*void f(long *a,long *b,int k,int a1)
{
	long *c=new long[a1];
	long *d=new long[a1];//4
	int i;
	for (i=0;i<=a1-1;i++){
		b[i]=0;
		c[i]=0;
		d[i]=0;
	}
	b[0]=1;
	c[0]=4;
	for (i=0;i<k;i++)
		multiply(b,c,a1);
	multiply(a,a,a1);
	plus(a,b,a1);
	d[a1/2]=1;
	multiply(b,d,a1);
	divide(b,a,a1);
	delete c;
	delete d;
}
main()
{
	int n;
	cout<<"输入pi位数";
	cin>>n;
	int m=n/4+1;
	long *a=new long [2*m];
	long *b=new long [2*m];
	long *c=new long [2*m];
	long *d=new long [2*m];
	long *e=new long [2*m];
	long *aa=new long [2*m];
	int i;
	for (i=0;i<=2*m-1;i++)
		a[i]=0;
	for (i=0;i<=2*m-1;i++){
		c[i]=0;
		d[i]=0;
		e[i]=0;
		aa[i]=0;
	}
	e[0]=2;
	f(a,b,0,2*m);
	divide(b,e,2*m);
	plus(c,b,2*m);
	a[0]=1;
	f(a,b,0,2*m);
	divide(b,e,2*m);
	plus(c,b,2*m);
	int k=10;
	d[0]=1;
	for (i=0;i<k;i++)
		multiply(d,e,2*m);
	aa[0]=e[0]=a[0]=1;
	while (minus(a,d,2*m)==1){
		for(i=0;i<=2*m-1;i++)
			a[i]=aa[i];
		f(a,b,k,2*m);
		plus(c,b,2*m);
		plus(aa,e,2*m);
		for(i=0;i<=2*m-1;i++)
			a[i]=aa[i];
	}
	e[0]=4;
	divide(c,d,2*m);
	multiply(c,e,2*m);
	for (i=m-1;i>=0;i--)
		cout<<c[i];
	return 0;
}
*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -