写一个程序依次寻找100000以后的10000个素数,计算这些素数相邻两个之间的间
距,寻找相邻的间距最小的素数对,将相邻最小间距、相邻最小间距素数对的个数、最大
的相邻间距最小的素数对输出。
该回答引用ChatGPT
请参考下面的代码
#include<iostream>
#include<cmath>
#include<vector>
using namespace std;
bool is_prime(int n) {
if (n <= 1) return false;
int m = sqrt(n);
for (int i = 2; i <= m; i++) {
if (n % i == 0) return false;
}
return true;
}
int main() {
int num_primes = 0, min_gap = 0x7fffffff, max_gap = 0, gap;
int prime1, prime2;
vector<int> primes;
for (int i = 100000; num_primes < 10000; i++) {
if (is_prime(i)) {
num_primes++;
primes.push_back(i);
if (num_primes >= 2) {
gap = primes[num_primes - 1] - primes[num_primes - 2];
if (gap < min_gap) {
min_gap = gap;
prime1 = primes[num_primes - 2];
prime2 = primes[num_primes - 1];
}
if (gap > max_gap) {
max_gap = gap;
}
}
}
}
cout << "The minimum gap is " << min_gap << " between " << prime1 << " and " << prime2 << endl;
cout << "The maximum gap is " << max_gap << endl;
return 0;
}