欧拉筛c++算法讲解
时间: 2024-09-18 12:17:55 浏览: 117
欧拉筛(Euler's Sieve)是一种用于找出一定范围内所有质数的经典算法。它基于埃拉托斯特尼筛法(Sieve of Eratosthenes),但是采用了更有效的策略来避免重复工作。以下是基本的C++实现:
```cpp
#include <vector>
using namespace std;
void erastoSieve(int limit, vector<int>& primes) {
bool isPrime[limit + 1]; // 初始化所有数为true
fill(isPrime, isPrime + limit + 1, true);
for (int p = 2; p * p <= limit; ++p) { // 只需检查到√limit
if (isPrime[p]) {
for (int i = p * p; i <= limit; i += p) // 将p的倍数标记为非质数
isPrime[i] = false;
}
}
for (int p = 2; p <= limit; ++p)
if (isPrime[p])
primes.push_back(p); // 将剩余的质数添加到结果数组
}
// 使用示例
int main() {
int limit = 100; // 想要查找的质数范围
vector<int> primes;
erastoSieve(limit, primes);
// 打印找到的所有质数
for (const auto& prime : primes)
cout << prime << " ";
return 0;
}
```
这个算法首先创建一个布尔数组表示每个数是否为质数,然后从最小的素数开始,将它的所有倍数标记为非质数。最后,剩下的未标记为非质数的数就是质数。
阅读全文
相关推荐
![pptx](https://img-home.csdnimg.cn/images/20241231044947.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/x-zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)