POJ 哥巴猜想
/*POJ 2262 哥巴猜想:每个偶素(n >= 4)都可表示成两个素数之和 思路: 打表 */#include<iostream>#include<cstdio>#define manx 1000009using namespace std;bool s[manx];void prime(){ for(int i=0;i<manx;i++) s[i]=0; for(int i=2;i*i<=manx;i++){ if(!s[i]){ for(int j=2;j*i<manx;j++) s[i*j]=1; } }}int main(){ prime(); int n; while(cin>>n,n){ if(n%2){ cout<<"Goldbach's conjecture is wrong." <<endl; continue; } int flag=0; for(int i=3;i+i<=n;i++){ if(!s[i] && !s[n-i]){ cout<<n<<" = "<<i<<" + "<<n-i<<endl; flag=1; break; } } if(!flag) cout<<"Goldbach's conjecture is wrong." <<endl; }}/*POJ 2909 哥巴猜想:每个偶素(n >= 4)都可表示成两个素数之和 思路: 打表 */#include<iostream>#include<cstdio>#define manx 1000009using namespace std;bool s[manx];void prime(){ for(int i=0;i<manx;i++) s[i]=0; for(int i=2;i*i<=manx;i++){ if(!s[i]){ for(int j=2;j*i<manx;j++) s[i*j]=1; } }}int main(){ prime(); int n; while(cin>>n,n){ int flag=0; for(int i=2;i+i<=n;i++){ if(!s[i] && !s[n-i]){ flag++; } } cout<<flag<<endl; }}