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