首页 > 代码库 > 歌德巴赫猜想

歌德巴赫猜想

哥德巴赫猜想认为“每一个大于2的偶数,都能表示成两个质数之和”。

给定一个大于2的偶数N,你能找到两个质数P和Q满足P<=Q并且P+Q=N吗?

Input

一个偶数N(4 <= N <= 1000000)

Output

输出P和Q。如果有多组解,输出P最小的一组。

Sample Input

10

Sample Output

3 7


.......我还以为是啥数学题,结果是水题啊
技术分享
 1 #include <iostream> 2 #include <stdio.h> 3 #include <math.h> 4 using namespace std; 5  6 int Su(int x) 7 { 8     int t=sqrt(x); 9     for (int i=2;i<=t;i++)10     {11         if (x%i==0)12             return 0;13     }14     return 1;15 }16 17 int main()18 {19     int n;20     while (scanf("%d",&n)!=EOF)21     {22         int ok=0;23         int tmp=n/2;24         for (int i=2;i<=tmp;i++)25         {26             if (Su(i)&&Su(n-i))27             {28                 ok=i;29                 break;30             }31         }32         if (ok)33             printf("%d %d\n",ok,n-ok);34     }35     return 0;36 }
View Code

 

 

歌德巴赫猜想