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