题目链接
题目描述
给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。输入值小于1000。
如,输入为10, 程序应该输出结果为2。(共有两对质数的和为10,分别为(5,5),(3,7))
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
const int maxn = 1100;
int vis[maxn];
void is_prime()
{
memset(vis,0,sizeof(vis));
vis[1] = 1;
for(int i = 2;i < maxn;i++)
{
if(vis[i]) continue;
for(int j = i;j <= maxn/i;++j)
{
vis[i*j]=1;
}
}
}
int main()
{
int n,ans;
is_prime();
while(cin>>n)
{
ans=0;
for(int i = 2;i <= n/2;++i)
{
if(!vis[i] && !vis[n-i])
{
ans++;
}
}
cout<<ans<<endl;
}
return 0;
}