筛法求素数的程序代码c++
时间: 2024-12-07 17:12:50 浏览: 27
筛法(Sieve of Eratosthenes)是一种用于寻找一定范围内所有质数的经典算法。以下是使用 C++ 编写的简单版埃拉托斯特尼筛法程序:
```cpp
#include <iostream>
#include <vector>
// 定义最大查找范围
const int MAX_N = 100; // 可根据需求调整
void sieveOfEratosthenes() {
std::vector<bool> isPrime(MAX_N + 1, true); // 初始化一个布尔数组,标记所有数字为素数
for (int p = 2; p * p <= MAX_N; p++) { // 遍历从2到√n
if (isPrime[p]) { // 如果p是素数
for (int i = p * p; i <= MAX_N; i += p) { // 将p的倍数标记为合数
isPrime[i] = false;
}
}
}
// 输出素数
for (int p = 2; p <= MAX_N; p++) {
if (isPrime[p])
std::cout << p << " ";
}
}
int main() {
sieveOfEratosthenes();
return 0;
}
```
在这个程序中,`isPrime` 数组记录了每个数是否是素数。从2开始遍历,如果当前数是素数,则将其所有倍数都标记为合数。最后,输出所有的素数。
阅读全文