Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 41314 | Accepted: 15827 |
Description
Every even number greater than 4 can be
written as the sum of two odd prime numbers.
8 = 3 + 5. Both 3 and 5 are odd prime numbers.
20 = 3 + 17 = 7 + 13.
42 = 5 + 37 = 11 + 31 = 13 + 29 = 19 + 23.
Input
Output
Sample Input
8 20 42 0
Sample Output
8 = 3 + 5 20 = 3 + 17 42 = 5 + 37 将一个数分解为两个素数相加,且差值最大的那一个,因为数据范围为100w,所以直接打一个素数表就行了。 ac代码:#include<stdio.h> #include<string.h> #include<math.h> #include<iostream> #include<algorithm> #define MAXN 1000100 #define INF 0xfffffff #define MIN(a,b) a>b?b:a using namespace std; int v[MAXN]; void db() { int i,j; memset(v,0,sizeof(v)); for(i=2;i<=1000000;i++) { if(v[i]==0) { for(j=i*2;j<=1000000;j+=i) v[j]=1; } } } int main() { db(); int num; int i; while(scanf("%d",&num)&&num) { int bz=0; for(i=2;i<num;i++) { if(!v[i]&&!v[num-i]) { printf("%d = %d + %d\n",num,i,num-i); bz=1; break; } } if(bz==0) printf("Goldbach's conjecture is wrong.\n"); } return 0; }