POJ-2262 Goldbach's Conjecture
题意:给定一个偶数n,将其分解成两个素数(有多组则输出差值最大的)。
思路:水水.......
题目链接:http://poj.org/problem?id=2262
View Code
1 #include <cstdio> 2 #include <cmath> 3 #include <cstdlib> 4 #include <cstring> 5 #include <string> 6 #include <algorithm> 7 #include <iostream> 8 using namespace std; 9 const int N=1000010; 10 11 bool isprime[N]; 12 int prime[N]; 13 int n; 14 15 int main(){ 16 17 // freopen("data.in","r",stdin); 18 // freopen("data.out","w",stdout); 19 20 int cnt=0; 21 isprime[1]=true; 22 for(int i=2;i<N;i++){ 23 if(!isprime[i]){ 24 prime[++cnt]=i; 25 for(int j=2;i*j<N;j++) 26 isprime[i*j]=true; 27 } 28 } 29 while(scanf("%d",&n),n){ 30 bool flag=false; 31 for(int i=1;prime[i]<n;i++){ 32 if(!isprime[n-prime[i]]){ 33 printf("%d = %d + %d\n",n,prime[i],n-prime[i]); 34 flag=true; 35 break; 36 } 37 } 38 if(!flag) puts("Goldbach's conjecture is wrong."); 39 } 40 return 0; 41 }