如何用c++编程在(2到1000000)验证哥德巴赫猜想

来源:百度知道 编辑:UC知道 时间:2024/05/05 01:27:02
哥德巴赫猜想:任何大于2的偶数都可以表示为两个素数之和

#include <string.h>

char Prime[1000000];
void CreateList();//生成素数列表

int main(void)
{
int i,j;
CreateList();
for(i=4;i<1000000;i+=2)
{
for(j=2;j<i;j++)
{
if(Prime[j]&&Prime[i-j])
{
//printf("%d=%d+%d\t",i,j,i-j); //有点多不打印了
break;
}
}
if(j==i) printf("%6d无解\t",i);
}
printf("验证完毕!");
return 0;
}

void CreateList()
{
//筛法计算素数:
//用一个数组记录数字i是不是素数,如果是那么数组的Prime[i]置为1,如果不是置为0;
//从2开始,2的所有整数倍不是素数,把所有2的整数倍置0,下个数是3,同样处理;
//下个数是4,因为已经是0所以不用处理,同样方法处理完所有数
int i,j;
memset(Prime,1,1000000);//假设所有数是素数,用1初始化所有位
for(i=2;i<1000;i++)
{
if(Prime[i])
{
for(j=i*2;j<1000000;j+=i) Prime[j]=0;//i的整数倍不是素数,排除
}
}
}

#include<stdio.h>
#include<math.h>

int fflag(int n);