描述
哥德巴赫猜想大家都知道一点吧.我们现在不是想证明这个结论,而是想在程序语言内部能够表示的数集中,任意取出一个偶数,来寻找两个素数,使得其和等于该偶数.
做好了这件实事,就能说明这个猜想是成立的.
由于可以有不同的素数对来表示同一个偶数,所以专门要求所寻找的素数对是两个值最相近的,而且素数对中的第一个数不大于第二个数.
输入
输入中是一些偶整数M(5<M<=10000).
输出
对于每个偶数,输出两个彼此最接近的素数,其和等于该偶数.
样例输入
20
30
40
样例输出
7 13
13 17
17 23
1 #include<stdio.h> 2 #include<math.h> 3 #include<string.h> 4 #include<ctype.h> 5 6 int isprim(int n) 7 { 8 int i; 9 for(i=2; i*i<=n; i++) 10 { 11 if(n%i==0) 12 return 0; 13 } 14 return 1; 15 } 16 17 void solve() 18 { 19 int n,i,j; 20 while(scanf("%d",&n)!=EOF) 21 { 22 for(i=n/2; i>1; i--) 23 { 24 if(isprim(i)) 25 { 26 for(j=n/2; j<n; j++) 27 { 28 if(isprim(j)) 29 { 30 if(i+j==n) 31 goto lop; 32 } 33 } 34 } 35 } 36 lop:printf("%d %d\n",i,j); 37 } 38 } 39 40 int main() 41 { 42 solve(); 43 return 0; 44 }