acwing算法基础之数学知识--求小于等于n的所有质数

目录

  • [1 基础知识](#1 基础知识)
  • [2 模板](#2 模板)
  • [3 工程化](#3 工程化)

1 基础知识

核心思想:把2~n中的非质数打上标记(也即,筛掉),剩余的就是质数。

一般做法:

cpp 复制代码
int primes[N]; //存储所有的质数
int st[N]; //存储是否被排除
int cnt;
int n;

void f() {
	for (int i = 2; i <= n; ++i) {
		if (!st[i]) {
			primes[cnt++] = i;
			for (int j = i + i; j <= n; j += i) {
				st[j] = true;
			}
		}
	}
	//输出小于等于n的所有质数
	for (int i = 0; i < cnt; ++i) cout << primes[i] << " ";
	cout << endl;
	return;
}

线性筛选质数的方法,它的核心思想:非质数,只会被它的最小质因子筛掉。

cpp 复制代码
int n, cnt;
int primes[N];
bool st[N];

void f() {
	for (int i = 2; i <= n; ++i) {
		if (!st[i]) primes[cnt++] = i;
		for (int j = 0; primes[j] <= n / i; ++j) {
			st[primes[j] * i] = true;
			if (i % primes[j] == 0) break; 
		}
	}
	//输出所有质数
	for (int i = 0; i < cnt; ++i) cout << primes[i] << " ";
	cout << endl;
	return;
}

2 模板

暂无。。。

3 工程化

暂无。。。

相关推荐
IronMurphy1 天前
【算法三十九】994. 腐烂的橘子
算法
Ares-Wang1 天前
算法》》旅行商问题 TSP、7座桥问题 哈密顿回路 深度优先 和 宽度优先
算法·深度优先·宽度优先
Liqiuyue1 天前
Transformer:现代AI革命背后的核心模型
人工智能·算法·机器学习
WolfGang0073211 天前
代码随想录算法训练营 Day34 | 动态规划 part07
算法·动态规划
Kk.08021 天前
Linux(十一)fork实例练习、文件操作示例及相关面试题目分享
linux·运维·算法
潇冉沐晴1 天前
2026CCCC第三次模拟赛 部分题解
算法
WolfGang0073211 天前
代码随想录算法训练营 Day32 | 动态规划 part05
算法·动态规划
碧海银沙音频科技研究院1 天前
1-1杰理蓝牙SOC的UI配置开发方法
人工智能·深度学习·算法
啊我不会诶1 天前
2024CCPC长春邀请赛
算法