编写程序实现用Eratosthenes筛法寻找给定范围内的素数C++代码及运行结果
时间: 2024-09-10 18:27:44 浏览: 56
在一个给定范围的区间内找到该区间所有的质数(素数)
Eratosthenes筛法是一种古老的求解一定范围内所有素数的经典算法。以下是用C++编写的一个简单版本:
```cpp
#include <iostream>
#include <vector>
void sieveOfEratosthenes(int n) {
std::vector<bool> primes(n+1, true); // 初始化一个布尔数组, 2; i * i <= n; i++) { // 只需要检查到√n
if (primes[i]) { // 如果i是质数
for (int j = i * i; j <= n; j += i) { // 将i的所有倍数标记为合数
primes[j] = false;
}
}
}
// 打印出所有素数
for (int i = 2; i <= n; i++)
if (primes[i])
std::cout << i << " ";
}
int main() {
int range = 50; // 示例范围,你可以替换为你想要查找素数的上限
sieveOfEratosthenes(range);
return 0;
}
```
运行此程序,假设输入范围为50,输出将会是2、3、5、7、11、13、17、19、23、29、31、37、41、43、47,这些都是50以内的素数。
阅读全文