您的位置:首页 > 其它

POJ 2909

2015-06-11 11:58 363 查看
#include<iostream>
#include<stdio.h>
#define M 35000
#include<math.h>
#define N 3800
using namespace std;

int prime
;
void give_list();
int main()
{
//freopen("acm.acm","r",stdin);
int i;
int j;
int num;
int sum;
give_list();
while(cin>>num)
{
sum = 0;
if(num == 0)
break;
for(i = 1; ;++ i)
{
for(j = i; ;++ j)
{
if(prime[i] + prime[j] == num)
++ sum;
if(prime[i] + prime[j] > num)
break;
}
if(prime[i] >= num/2)
{
break;
}

}
cout<<sum<<endl;
}
}

void give_list()
{
int i;
int j;
bool prim1[M];
memset(prim1,true,sizeof(bool)*M);
prim1[1] = false;
for(i = 2; i < sqrt(long double(M))+1; i ++)
{
if(prim1[i])
{
j = 2*i;
while(j < M)
{
prim1[j] = false;
j += i;
}
}
}
j = 1;
for(i = 2; i < M; i ++)
{
if(prim1[i])
{
prime[j] = i;
++ j;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: