标签:
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 39353 | Accepted: 15077 |
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
Source
1 #include<cstdio> 2 #include<algorithm> 3 #include<iostream> 4 #include<string> 5 #include<cstring> 6 #include<vector> 7 using namespace std; 8 #define max 1000000 9 int prime[max+5]; 10 bool vis[max+5]; 11 void get_prime(int n){ 12 memset(vis,false,sizeof(vis)); 13 vis[0]=vis[1]=true; 14 int i=2,index=0; 15 for(;i<=n;i++){ 16 if(!vis[i]){ 17 prime[index++]=i; 18 //vis[i]=false; 19 } 20 int j=0; 21 for(;j<index&&prime[j]*i<=n;j++){//???? 22 vis[prime[j]*i]=true; 23 if(!(i%prime[j])) 24 break; 25 } 26 } 27 } 28 int main(){ 29 int n; 30 get_prime(max); 31 while(cin>>n&&n){ 32 int i=3,half=n/2; 33 for(;i<=half;i+=2){//等号一定要取到,存在数等于两个相同质数之和的 34 if(!vis[i]&&!vis[n-i]){ 35 break; 36 } 37 } 38 if(i>half) 39 cout<<"Goldbach‘s conjecture is wrong."<<endl; 40 else 41 cout<<n<<" = "<<i<<" + "<<n-i<<endl; 42 } 43 return 0; 44 }
poj 2262 Goldbach's Conjecture
标签:
原文地址:http://www.cnblogs.com/Deribs4/p/4297668.html