利用Eratosthenes筛法产生10000以内素数。C++
时间: 2024-09-10 09:28:36 浏览: 60
Eratosthenes筛选法求质数.rar
Eratosthenes筛法是一种古老而有效的求解一定范围内素数的方法,其基本思想是从2开始,将它的所有倍数都标记为合数,然后找到下一个未被标记的数(即下一个素数),继续这个过程直到达到范围的上限。以下是使用C++实现Eratosthenes筛法生成10000以内素数的一个简单示例:
```cpp
#include <iostream>
#include <vector>
using namespace std;
// 定义一个函数用于筛选素数
void sieveOfEratosthenes(int n) {
vector<bool> primes(n+1, true); // 创建一个布尔数组,初始值全设为true
primes[0] = primes[1] = false; // 0和1不是素数
for (int i = 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])
cout << i << " ";
}
}
int main() {
int limit = 10000;
sieveOfEratosthenes(limit);
return 0;
}
```
当你运行这个程序,它会输出10000以内的所有素数。注意,由于素数的数量随数值增大而减少,对于更大的范围,可能需要优化算法以提高效率。
阅读全文