任何一大于2的偶数都可写成两个质数之和
代码实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | /**************************************************************** * Description: C++ implementation of goldbach conjecture 歌德巴赫猜想 * Author: Alex Li * Date: 2023-07-02 15:17:33 * LastEditTime: 2023-07-02 16:18:31 ****************************************************************/ #include <iostream> using namespace std; int main(){ const int SIZE=1000; int n,r,p[SIZE],k,ans; bool tmp; cin>>n; if(n%2!=0){ cout<<"the wrong number is be inputed"; return 0; } r=1; p[1]=2; //将小于n的质数放到p[]数组里 for ( int i =3; i <=n; i++){ tmp=true; for ( int j =1; j <=r; j++){ if(i%p[j]==0){ //判断i是否为质数,只要判断和p[]里面的质数是否能整除。 tmp=false; break; } } if(tmp){ r++; p[r]=i; } } //遍历质因数的数组,找到两个质数之和等于n for ( int i =1; i <=r/2; i++){ for ( int j =1; j <=r; j++){ if((p[i]+p[j])==n)cout<<p[i]<<" and "<<p[j]<<endl; } } } |
洛谷:P1304