使用【C++】写【请找出从某个正整数开始后出现的第n个质数。 】的代码
时间: 2024-12-20 19:16:20 浏览: 8
在 C++ 中,找出从某个正整数开始后的第 n 个质数,可以使用 Sieve of Eratosthenes 算法来辅助查找。这是一个著名的寻找质数序列的有效算法。下面是一个简单的实现示例:
```cpp
#include <iostream>
#include <vector>
// 函数用来判断是否为质数
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;
}
// 找出从 start 开始的第 n 个质数
int findNthPrime(int start, int n) {
std::vector<bool> primes(start + n, true); // 初始化一个布尔向量,所有元素初始设为质数
primes[0] = primes[1] = false; // 0和1不是质数
int count = 0;
for (int i = 2; i < primes.size(); i++) {
if (primes[i]) { // 如果当前数是质数
if (count == n - 1) // 当找到第 n 个质数时返回它
return i - start;
else
count++; // 继续计数
}
}
// 如果找不到第 n 个质数,返回负数表示超出范围
return -1;
}
int main() {
int start, n;
std::cout << "请输入起始数字: ";
std::cin >> start;
std::cout << "请输入要找的质数序号: ";
std::cin >> n;
int nth_prime = findNthPrime(start, n);
if (nth_prime != -1)
std::cout << "第 " << n << " 个大于 " << start << " 的质数是: " << nth_prime << std::endl;
else
std::cout << "无法找到第 " << n << " 个大于 " << start << " 的质数." << std::endl;
return 0;
}
```
阅读全文