素数对
题目描述
给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。输入值小于1000。
如,输入为10, 程序应该输出结果为2。(共有两对质数的和为10,分别为(5,5),(3,7))
输入描述:
输入包括一个整数n,(3 ≤ n < 1000)
输出描述:
输出对数
示例1
输入
10
输出
2
思路:首先定义判断是否是质数的函数,判断有多少对质数的和为n,即判断(n-i)和 i是否同时为质数
#include<iostream>
using namespace std;
int isPrime(int n){ //定义素数判断函数
for(int i = 3; i < n/2 + 1; i++){
if(n % i == 0)
return false;
}
return 1;
}
int main(){
int n;
int count = 0;
while(cin >> n){
if(n >= 3 && n < 1000){
for(int i = 3; i <= n/2; i++){ //判断到中值
if(isPrime(i)&&isPrime(n-i)) //如果i和n-i都是质数,计数+1
count ++;
}
}
}
cout << count <<endl;
return 0;
}