给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。输入值小于1000。
如,输入为10, 程序应该输出结果为2。(共有两对质数的和为10,分别为(5,5),(3,7))
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
const long long N = 1000;
int dp[N]={1,1,0};
int prim[N],tot = 0;
void init()
{
for(long long i = 2 ; i < N ; i ++)
{
if(dp[i])continue;
prim[tot++]=i;
for(long long j = i ; j * i < N ; j ++){
dp[i*j] = 1;
}
}
}
int main()
{
init();
int q[1000]={0};
for(int n=0;n<tot;n++)
q[prim[n]]=1;
int tmp=0;
scanf("%d",&tmp);
int ans=0;
for(int i=1;i<tmp/2+1;i++){
if(q[i]==1&&q[tmp-i]==1)
ans++;
}
cout<<ans;
return 0;
}