POJ-2909-Goldbach's Conjecture

来源:互联网 发布:南宁广电网络缴费 编辑:程序博客网 时间:2024/05/16 05:55

这个题要求求出有多少对素数的和等于n

思路:筛选后直接枚举即可,注意枚举到中间值就行,不要重复计算素数对

代码:

#include<cstdio>#include<cstring>const int maxn=32800;bool ispri[maxn];int pri[maxn],cnt;void Init(){    ispri[1]=1;    cnt=0;    for(int i=2;i<maxn;i++)    {if(!ispri[i])    pri[cnt++]=i;for(int j=2;i*j<maxn;j++)    ispri[i*j]=1;    }}int main(){    Init();    int n;    while(scanf("%d",&n)&&n)    {int m=n>>1,ans=0;for(int i=0;pri[i]<=m;i++)    if(!ispri[n-pri[i]])ans++;printf("%d\n",ans);    }    return 0;}


原创粉丝点击