拿走不谢
2025-09-07 20:32:58
发布于:山东
1阅读
0回复
0点赞
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
// 处理特殊情况
if (n < 2) {
return 0;
}
// 创建一个布尔数组表示是否为质数,初始值都设为true
vector<bool> is_prime(n + 1, true);
is_prime[0] = is_prime[1] = false; // 0和1不是质数
// 埃拉托斯特尼筛法
for (int i = 2; i * i <= n; ++i) {
if (is_prime[i]) { // 如果i是质数
// 将i的所有倍数标记为非质数
for (int j = i * i; j <= n; j += i) {
is_prime[j] = false;
}
}
}
// 收集并输出所有质数
for (int i = 2; i <= n; ++i) {
if (is_prime[i]) {
cout << i << " ";
}
}
cout << endl;
return 0;
}
这里空空如也
有帮助,赞一个