寻找素数对

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 9505    Accepted Submission(s): 4822


Problem Description
哥德巴赫猜想大家都知道一点吧.我们现在不是想证明这个结论,而是想在程序语言内部能够表示的数集中,任意取出一个偶数,来寻找两个素数,使得其和等于该偶数.
做好了这件实事,就能说明这个猜想是成立的.
由于可以有不同的素数对来表示同一个偶数,所以专门要求所寻找的素数对是两个值最相近的.
 

 

Input
输入中是一些偶整数M(5<M<=10000).
 

 

Output
对于每个偶数,输出两个彼此最接近的素数,其和等于该偶数.
 

 

Sample Input
20 30 40

 

 

 

Sample Output
7 13 13 17 17 23

 

 

 

Source
 
//
 1 #include<stdio.h>
 2 const int N = 10001;
 3 int biao[10001];
 4 int main()
 5 {
 6     int i;
 7     for(i=2;i<N;i++)//打表;
 8     {
 9         biao[i]=1;
10     }
11     for(i=2;i<N;i++)
12     {
13         if(biao[i]==1)
14         {
15             int j;
16             for(j=2*i;j<N;j+=i)
17             biao[j]=0;
18         }
19     }
20     int m;
21     while(~scanf("%d",&m))
22     {
23         int left,right;
24         for(i=2;i<=m/2;i++)
25         {
26             if(biao[i]==1&&biao[m-i]==1)
27             { 
28                 left=i; 
29                 right=m-i; 
30             }
31         }    
32         printf("%d %d\n",left,right);
33     }    
34     return 0;
35 } 

 

 

posted on 2015-06-12 23:35  cleverbiger  阅读(198)  评论(0编辑  收藏  举报