用c++写所谓“双质数”是指对于两个质数p和q,如果满足p = q + 2,则p和q为双质数。 请编程实现利用函数求解闭区间[m, n]之间的双质数,其中m和n均为正整数且m < n。
时间: 2023-06-17 15:02:18 浏览: 150
以下是用C++编写的双质数求解程序:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
bool isPrime(int n) { // 判断是否为质数
if (n <= 1) return false;
int sqrtn = sqrt(n);
for (int i = 2; i <= sqrtn; i++) {
if (n % i == 0) return false;
}
return true;
}
int main() {
int m, n;
cin >> m >> n;
if (m >= n || m <= 0) {
cout << "Invalid input!" << endl;
return 0;
}
int p = m % 2 == 0 ? m + 1 : m; // 从一个奇数开始
int cnt = 0;
while (p + 2 <= n) { // 枚举双质数
if (isPrime(p) && isPrime(p + 2)) {
cnt++;
cout << p << " " << p+2 << endl;
}
p += 2; // 只需要枚举奇数
}
if (cnt == 0) cout << "No twin primes found." << endl;
return 0;
}
```
程序首先通过 `isPrime` 函数判断一个数是否为质数。然后输入闭区间的左右端点 `m` 和 `n`,从 `m` 开始枚举奇数,判断其是否为双质数并输出。如果没有找到双质数,则输出提示信息。
阅读全文