腾讯笔试校招题素数对

时间限制:1秒

空间限制:32768K

给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。输入值小于1000。
如,输入为10, 程序应该输出结果为2。(共有两对质数的和为10,分别为(5,5),(3,7))

输入描述:

输入包括一个整数n,(3 ≤ n < 1000)

输出描述:

输出对数

输入例子1:

10

输出例子1:

2

校招中数论的题目是很少出的,一般都是最基本的算法。这里使用简单的素数判断法,注意判重的情况

#include <iostream>
#include <cmath>
using namespace std;

bool isPrime(int n)
{
    for(int i=2;i<=sqrt(n);i++){
        if(n%i==0)
            return false;
    }
    return true;
}
int main()
{
    int n,count=0;
    cin>>n;
    for(int i=2;i<=n-2;i++){
        if(isPrime(i) && isPrime(n-i)){
            if(i==n-i)
                count+=2;
            else
                count++;
        }
    }
    cout<<count/2<<endl;
}

猜你喜欢

转载自blog.csdn.net/wwxy1995/article/details/89440742