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;
}