POJ 2909 Goldbach's Conjecture

来源:互联网 发布:李天下知乎 编辑:程序博客网 时间:2024/05/22 05:19

题目链接:http://poj.org/problem?id=2909

题意:判断一个数可以拆分成多少对不同的两个素数和,两个素数可以相等

代码:

#include <iostream>#include<cstdio>#include<cstring>using namespace std;#define N 45000bool prime[N];int primes[N];void make_prime(){    memset(prime,1,sizeof(prime));    int cnt=0;    prime[0]=false;    prime[1]=false;    for(int i=2;i<N;i++)        if(prime[i])    {        primes[++cnt]=i;        for(int k=i*i;k<N;k+=i)            prime[k]=false;    }}int main(){    int n;     make_prime();    while(scanf("%d",&n) && n!=0)    {        int count=0;        for(int i=2;i<=n/2;i++)            if(prime[i] && prime[n-i])            count++;            printf("%d\n",count);    }    return 0;}


0 0
原创粉丝点击