找到一个大于n的最小素数C++
时间: 2024-12-12 17:32:05 浏览: 17
在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;
}
int smallestPrimeGreaterThanN(int n) {
std::vector<bool> primes(n+1, true); // 初始化所有的数为质数
primes[0] = primes[1] = false;
for (int i = 2; i * i <= n; ++i) { // 遍历直到 sqrt(n)
if (primes[i]) {
for (int j = i * i; j <= n; j += i) { // 将 i 的倍数标记为非质数
primes[j] = false;
}
}
}
// 遍历从 n + 1 开始的数,寻找第一个质数
int nextPrime = n + 1;
while (!primes[nextPrime]) {
++nextPrime;
}
return nextPrime;
}
int main() {
int n;
std::cout << "Enter a number: ";
std::cin >> n;
int result = smallestPrimeGreaterThanN(n);
std::cout << "The smallest prime greater than " << n << " is: " << result << std::endl;
return 0;
}
```
在这个代码中,`isPrime()` 函数用于判断一个数是否是质数,然后 `smallestPrimeGreaterThanN()` 函数通过 Sieve of Eratosthenes 算法找出大于n的第一个质数。
阅读全文