歌德巴赫猜想(goldbach conjecture)

任何一大于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

Scroll to Top