在C++编程中,如何使用筛法算法找出100以内的所有质数?
时间: 2024-12-12 10:28:38 浏览: 20
在C++中,可以使用埃拉托斯特尼筛法(Sieve of Eratosthenes)来找出100以内的所有质数。这个算法的基本思想是从2开始,将每个质数的倍数标记为合数,直到达到给定范围为止。以下是简单的步骤:
```cpp
#include <iostream>
#include <vector>
void sieveOfEratosthenes(int n) {
std::vector<bool> isPrime(n+1, true); // 初始化一个布尔向量,假设所有数字都是质数
isPrime[0] = false; // 0和1不是质数
isPrime[1] = false;
for (int i = 2; i * i <= n; i++) { // 只需检查到√n
if (isPrime[i]) {
// 将i的所有倍数标记为合数
for (int j = i * i; j <= n; j += i)
isPrime[j] = false;
}
}
// 输出所有质数
for (int i = 2; i <= n; i++)
if (isPrime[i])
std::cout << i << " ";
}
int main() {
int limit = 100;
sieveOfEratosthenes(limit);
return 0;
}
```
当你运行这段代码时,它会打印出100以内的所有质数。
阅读全文