武汉科技大学ACM :1009: 华科版C语言程序设计教程(第二版)例题4.18

Problem Description

 验证哥德巴赫猜想:任何充分大(>=4)的偶数都可以用两个素数之和表示。

Input

 输入一个偶数n。(2<n<=10000)

Output

 找到a、b使得 n=a+b

其中a、b为两个素数,且a<=b。

Sample Input

4

100

Sample Output

2 2

3 97

 1 #include <iostream>
 2 
 3 #include<math.h>
 4 
 5 using namespace std;
 6 
 7 int prime(int m)
 8 
 9 {
10 
11          int i,n;
12 
13          if(m==1)return 0;
14 
15          n=(int)sqrt((double)m);
16 
17          for(i=2;i<=n;i++)
18 
19                    if(m%i==0)return 0;
20 
21                    return 1;
22 
23 }
24 
25 int main()
26 
27 {
28 
29          int count,i,number;
30 
31          count=0;
32 
33          while(cin>>number)
34 
35          {
36 
37                    for(i=2;i<=number/2;i=i+1)
38 
39                             if(prime(i)&&prime(number-i))
40 
41                             {
42 
43                                      cout<<i<<" "<<number-i<<endl;
44 
45                                      break;
46 
47                             }
48 
49          }
50 
51          return 1;
52 
53 }

其他代码:

 1 #include<stdio.h>
 2 #include<math.h>
 3 int prime (int m)
 4 {
 5     int r = m/2;
 6     for (int i = 2; i <= r; i++)
 7         if (m % i == 0)
 8             return 0;
 9     return 1;
10 }
11 int main()
12 {
13     int n,i;
14     while(~scanf("%d",&n))
15     {
16         for(i=2;i<=n/2;i++)
17             if(prime(i)&&prime(n-i)){
18                 printf("%d %d\n",i,n-i);
19                 break;
20             }
21     }
22     return 0;
23 }

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。