题目链接:http://acm.nefu.edu.cn/JudgeOnline/problemshow.php?problem_id=2
题目中文题目,很好理解,就是要判断一个偶数有多少对素数相加之和为该偶数。
只要把素数全部标记就好了。
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
using namespace std;
const int maxm=1<<24;
bool is[maxm];
int main(void)
{
int n;
int i,j;
memset(is, true, sizeof(is));
int e=static_cast<int>(sqrt((float)maxm));
for(i=4; i<=maxm; i+=2)
is[i]=false;
for(i=3; i<=e; i+=2)
if(is[i])
for(j=i+i; j<=maxm; j+=i)
is[j]=false;
while(scanf("%d", &n)!=EOF)
{
int cnt=0;
for(i=2; i<n/2+1; i++)
if(is[i] && is[n-i])
++cnt;
printf("%d\n", cnt);
}
return 0;
}