用c++写出条件如下的代码:用筛法求之N内的素数 输入N 输出0~N的素数
时间: 2024-03-12 14:47:23 浏览: 75
C/C++利用筛选法算素数的方法示例
以下是用 C++ 写的用筛法求解从 0 到 N 之间的素数的代码:
```c++
#include<iostream>
using namespace std;
const int MAXN = 100000; // 素数个数上限
bool is_prime[MAXN+1]; // 标记数组,初始全部为 true
void sieve(int n) { // 筛选法求素数
is_prime[0] = is_prime[1] = false;
for (int i = 2; i <= n; i++) {
if (is_prime[i]) {
for (int j = i*i; j <= n; j += i) {
is_prime[j] = false;
}
}
}
}
int main() {
int n;
cin >> n;
fill(is_prime, is_prime+n+1, true); // 初始化为全部为素数
sieve(n); // 筛选素数
for (int i = 2; i <= n; i++) {
if (is_prime[i]) {
cout << i << " "; // 输出素数
}
}
cout << endl;
return 0;
}
```
这段代码中,首先定义了一个常量 `MAXN` 表示素数的个数上限,以及一个布尔类型的标记数组 `is_prime`,用于标记某个数是否为素数。在主函数中,首先输入一个数 `n`,然后将标记数组全部初始化为 `true`,并调用 `sieve` 函数进行筛选素数。在 `sieve` 函数中,首先将 `0` 和 `1` 标记为非素数,然后从 `2` 开始遍历到 `n`,如果这个数是素数,就将它的倍数全部标记为非素数,最后返回主函数。在主函数中,遍历 `2` 到 `n` 之间的所有数,如果这个数是素数,就输出它。
阅读全文