用C++判断素数问题 判断一个大于 2 的正整数 n 是否为素数,请用至少两种方法实现。
时间: 2024-11-03 15:18:38 浏览: 32
求素数只可以被与自身整除的数。-谭浩强C++ ppt完整版
在 C++ 中,判断一个大于 2 的正整数 n 是否为素数,可以采用以下两种常见的方法:
### 方法一:朴素判断法(试除法)
```cpp
bool isPrime(int n) {
if (n <= 1) return false;
for (int i = 2; i * i <= n; ++i) {
if (n % i == 0) return false;
}
return true;
}
```
此方法通过遍历从 2 到 sqrt(n),如果 n 能被其中任何一个数整除,则 n 不是素数。
### 方法二:埃拉托斯特尼筛法(Sieve of Eratosthenes)
```cpp
#include <vector>
bool isPrime(int n) {
if (n <= 1) return false;
std::vector<bool> primes(n + 1, true);
primes[0] = primes[1] = false;
for (int i = 2; i * i <= n; ++i) {
if (primes[i]) {
for (int j = i * i; j <= n; j += i) {
primes[j] = false;
}
}
}
return primes[n];
}
```
这种方法首先创建一个布尔数组 `primes`,标记所有数字是否为素数。然后从 2 开始,将所有的倍数标记为非素数,最后检查 n 是否仍保持为素数。
阅读全文