题目链接
题目描述
给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。输入值小于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;
}
Last modification:September 21st, 2019 at 12:25 am
如果觉得我的文章对你有用,请随意赞赏