素数寻找问题相关程序

写一个程序依次寻找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;
}