输入数字n,找到小于n的相邻两个差距最大的素数,(如果差相同,则输出数字较小的那一组)c++
时间: 2024-03-25 18:35:20 浏览: 53
以下是c++代码实现:
```
#include <iostream>
#include <cmath>
using namespace std;
bool isPrime(int n) { // 判断素数的函数
if (n <= 1) return false;
for (int i = 2; i <= sqrt(n); i++) {
if (n % i == 0) return false;
}
return true;
}
int main() {
int n;
cin >> n;
int maxDiff = -1; // 最大差距
int prevPrime = -1; // 前一个素数
int currentPrime = -1; // 当前素数
for (int i = 2; i < n; i++) { // 从2开始找素数
if (isPrime(i)) {
prevPrime = currentPrime;
currentPrime = i;
if (prevPrime != -1 && currentPrime - prevPrime > maxDiff) {
maxDiff = currentPrime - prevPrime;
}
}
}
// 找到相邻两个素数差距最大的一对
prevPrime = -1;
currentPrime = -1;
for (int i = 2; i < n; i++) {
if (isPrime(i)) {
prevPrime = currentPrime;
currentPrime = i;
if (prevPrime != -1 && currentPrime - prevPrime == maxDiff) {
cout << prevPrime << " " << currentPrime << endl;
return 0;
}
}
}
return 0;
}
```
阅读全文