poj 2262(素数)

#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
int*data;
int len;
void init(){
    int n;
    for(n=2;n*n<=1000000;n++){
        if(data[n]==0){
            for(int j=n*2;j<=1000000;j+=n){
                data[j] = 1;
            }
        }
    }
}
int main(){
    data = new int[1000005];
    memset(data,0,sizeof(data));
    init();
    int n;
    while(scanf("%d",&n)&&n!=0){
        bool flag = true;
        for(int i=3;i<=n/2;i++){
            if(data[i]==0&&data[n-i]==0){
                flag = false;
                printf("%d = %d + %d\n",n,i,n-i);
//                cout<<n<<" = "<<i<<" + "<<n-i<<endl;
                break;
            }
        }
        if(flag){
            printf("Goldbach's conjecture is wrong.\n");
//            cout<<"Goldbach's conjecture is wrong."<<endl;
        }
    }
    delete data;
    return 0;
}

 

posted @ 2021-07-27 20:25  智人心  阅读(44)  评论(0)    收藏  举报