题目描述
哥德巴赫猜想:任一大于 2 的偶数,都可表示成两个素数之和。
验证:2000 以内大于 2 的偶数都能够分解为两个素数之和。
输入格式
无
输出格式
2000 以内大于 2 的偶数被分解的两个素数
按升序排列,第一个素数为最小值
4=2+2
6=3+3
8=3+5
10=3+7
12=5+7
14=3+11
16=3+13
......
完整代码
#include<bits/stdc++.h>
using namespace std;
int main(){
//freopen("/config/workspace/test/test","r",stdin);
int m=2001;
int isprime[m];
for(int i=0;i<m;i++){
isprime[i]=1;
}
for(int i=2;i<m;i++){
if(isprime[i]==1)
for(int j=2;i*j<m;j++){
isprime[i*j]=0;
}
}//构造素数表
isprime[1]=0;
for(int i=4;i<=2000;i+=2){
for(int x=2;x<i;x++){
if(isprime[x]==1&&isprime[i-x]==1){
printf("%d=%d+%d\n",i,x,i-x);
break;
}
}
}
return 0;
}