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

📄 主函数.cpp

📁 用Meisell-Lehmer算法计算PI(x)
💻 CPP
字号:
//计算素数


#include "stdafx.h"

#include "stdio.h"	

#include "stdlib.h"	

#include "time.h"

#include "math.h"

typedef __int64 bint;

void GetMiu(int *PList ,int *Miu, int a,int x_13);

int Get_PList(int *PList, int x_13);

int x_13;

int * PList;

extern a;

bint s2(bint x,int a,int *PList,int x_13,int *Miu);

bint S1(__int64 x, int x_13 , int *Miu);

bint p2(int* PList, __int64 x,int x_13,int a);
__int64 p2big(int* PList, __int64 x,int x_13,int a);



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

	
	printf("*****************************************************************************\n");
	printf("*******************      用Meisell-Lehmer算法计算π(x)    *******************\n");
	printf("*******************               欢迎使用!               *******************\n");
	printf("*******************                   制作者:              ******************\n");
	printf("************                        05地空一班                      *********\n");	
	printf("*************           00512015        于海旺                      *********\n");	
	printf("*************           00512038         初旭                       *********\n");
	printf("*************           00512059         田猛                       *********\n");
	printf("*************           00512087        王小龙                      *********\n");
	printf("*****************************************************************************\n");

	system("pause");
	system("cls");

	
	
	bint pi,x,s_2,s_1,p_2;

	x=1000;
	
	clock_t start, end;	
	
	flushall();
	

	printf("请输入x(x=0退出)\n");

	printf("x=");
				
	scanf("%I64d",&x);

		if(x>10)
		{
			double q =pow(x,1.0/3);
				
			int x_13 = (int)(q+0.00001);

			int *Miu =(int*)malloc(sizeof(int)*x_13);

			PList=(int*)malloc(sizeof(int)*x_13);

			a=Get_PList(PList, x_13);
					
			GetMiu(PList,Miu,a,x_13);

			start=clock();

			s_2=s2(x,a,PList,x_13,Miu);

			s_1=S1(x,x_13,Miu);

			if(x<80000000000000)
				p_2=p2(PList,x,x_13,a);
			else
				p_2=p2big(PList,x,x_13,a);
				
			pi=s_1+s_2+a-p_2-1;
				
			end = clock();
					
			printf("\n从1到%I64d共有素数:\n%I64d个\n\np2=%I64d\n\ns1=%I64d\n\n",x,pi,p_2,s_1);
					
			printf("s2=%I64d\n\n\n",s_2);

			printf("共耗时%lf秒\n\n\n",(((double)(end-start))/CLOCKS_PER_SEC));	

				
			system("pause");
			system("cls");

		}
		else
		{
			if(x==1)
				printf("pi=0\np2=\ns1=\ns2=0\n");
			if(x==2)
				printf("pi=1\np2=\ns1=\ns2=0\n");
			if(x==3)
				printf("pi=2\np2=\ns1=\ns2=0\n");
			if(x==4)
				printf("pi=2\np2=\ns1=\ns2=0\n");
			if(x==5)
				printf("pi=3\np2=\ns1=\ns2=0\n");
			if(x==6)
				printf("pi=3\np2=\ns1=\ns2=0\n");
			if(x==7)
				printf("pi=4\np2=\ns1=\ns2=0\n");
			if(x==8)
				printf("pi=4\np2=\ns1=\ns2=0\n");
			if(x==9)
				printf("pi=4\np2=\ns1=\ns2=0\n");
			if(x==10)
				printf("pi=4\np2=\ns1=\ns2=0\n");
		}
	
	printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n多谢指教!再见!\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
	system("pause");

	

	return 0;
	
}

⌨️ 快捷键说明

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