专栏文章

线性筛(蒟蒻的代码)

算法·理论参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mipxtkmt
此快照首次捕获于
2025/12/03 19:42
3 个月前
此快照最后确认于
2025/12/03 19:42
3 个月前
查看原文
个人主页线性筛,时间o(n):
CPP
#include <bits/stdc++.h>
using namespace std;
int a[100+5],prime[100+5];
int main() {
	int n,j=0;
	cin >> n;
	memset(a, 0, sizeof(a)); // 初始化标记数组
	for(int i=2; i<=n; i++) {
		if(a[i]==0) prime[++j] = i;  // 用 ++j 存储质数
		for(int k=1; k<=j && i*prime[k]<=n; k++) { // 修正循环条件和变量
			a[i*prime[k]] = 1;      // 标记合数
			if(i % prime[k] == 0) break; // 关键:线性筛核心逻辑
		}
	}
	for(int i=2; i<=n; i++)
		if(a[i]==0)
			cout<<i<<" ";
	return 0;
}
想通过审核

评论

0 条评论,欢迎与作者交流。

正在加载评论...