时间限制: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;
}