您的位置:首页 > 编程语言 > Go语言

poj2909——Goldbach's Conjecture

2011-01-01 15:57 295 查看
题意:给定一个数,求满足n=p1+p2,其中,p1、p2为质数。问有多少这样的对数?

思路:先打表,将质数表示出来。运用刷选法(或者叫什么了?反正名字差不多),用BFS实现!

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
bool prim[65535];
int queue[65535];
void solve()
{
memset(prim,true,sizeof(prim));
int front=0,rear=0;
rear++;queue[rear]=2;
while(front!=rear)
{
front++;
int k=2;
int index=k*queue[front];
while(index<65535)
{
prim[index]=false;
k++;
index=k*queue[front];
}
for(int i=queue[front]+1;i<65535;i++)
if(prim[i])
{
rear++;
queue[rear]=i;
break;
}
}
}
int main()
{
solve();
int n;
while(scanf("%d",&n)&&n)
{
int cnt=0;
for(int i=2;i<=n/2;i++)
{
if(prim[i]&&prim[n-i])
cnt++;
}
printf("%d/n",cnt);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: