用C++写出。给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。输入值小于1000。
时间: 2024-09-27 14:14:31 浏览: 62
在C++中,我们可以编写一个程序来解决这个问题,首先需要一些函数来判断是否是质数,然后遍历所有的质数寻找符合条件的组合。以下是实现的基本步骤:
```cpp
#include <iostream>
#include <vector>
using namespace std;
// 判断一个数是否为质数的辅助函数
bool isPrime(int num) {
if (num <= 1)
return false;
for (int i = 2; i * i <= num; ++i) {
if (num % i == 0)
return false;
}
return true;
}
// 找出所有小于n的质数
vector<int> findPrimes(int n) {
vector<int> primes;
for (int i = 2; i < n; ++i) {
if (isPrime(i))
primes.push_back(i);
}
return primes;
}
// 计算有多少对质数之和等于 target
void countPrimePairs(int target, const vector<int>& primes) {
int count = 0;
for (size_t i = 0; i < primes.size(); ++i) {
int complement = target - primes[i];
if (primes.find(complement) != primes.end() && complement != primes[i]) { // 检查互补数也是质数且不是相同的数
count++;
}
}
cout << "Number of prime pairs with sum " << target << ": " << count << endl;
}
int main() {
int input;
cout << "Enter a positive integer less than 1000: ";
cin >> input;
vector<int> primes = findPrimes(input);
countPrimePairs(input, primes);
return 0;
}
```
在这个程序中,用户会被提示输入一个小于1000的正整数。`findPrimes` 函数会生成所有小于输入值的质数,`countPrimePairs` 函数则计算并输出有多少对这样的质数之和等于输入值。
阅读全文