📄 主函数.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 + -