Poj 2262

 

哥德巴赫猜想 考点:打印素数表,水题

#include <iostream>

#include <stdio.h>

#include <string.h>

using namespace std;

 

const int MAX=1000000;

 

bool isprime[MAX+10];

int prime[MAX+10],cnt;

 

void getprime()

{

long long i,j;

cnt=0;

memset(isprime,1,sizeof(isprime));

isprime[0]=isprime[1]=0;

for(i=2;i<=MAX;i++)

{

if(isprime[i])

{

prime[cnt++]=i;

for(j=i*i;j<=MAX;j+=i)

isprime[j]=0;

}

}

}

 

int main()

{

getprime();

int n,i;

freopen("in.txt","r",stdin);

 

while(scanf("%d",&n)!=EOF)

{

if(n==0)

break;

for(int i=0;i<cnt;i++)

{

if((n-prime[i]>0)&& isprime[n-prime[i]])

{

printf("%d = %d + %d\n",n,prime[i],n-prime[i]);

break;

}

}

}

return 0;

}

原文地址:https://www.cnblogs.com/inpeace7/p/2396694.html