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 工程化

暂无。。。

相关推荐
Jerry2 小时前
LeetCode 189. 轮转数组
算法
Jerry3 小时前
LeetCode 739. 每日温度
算法
2601_954526757 小时前
【工业传感与算法实战】温漂补偿与零点抗漂破局:基于二阶多项式拟合的 C/C++ 边缘校准算法,深度拆解“压力变送器什么牌子好”的技术硬指标
c语言·c++·算法
叩码以求索8 小时前
浅谈:算法萌新如何高效刷题应对面试(一)
算法·面试·职场和发展
c2385610 小时前
把 C++ 内存分配拆透:new 与 malloc 的三层血缘
开发语言·c++·算法
aaaameliaaa11 小时前
指针之总结
c语言·笔记·算法
宵时待雨11 小时前
优选算法专题9:哈希表
数据结构·算法·散列表
txzrxz11 小时前
最短路问题——Dijkstra 算法
数据结构·c++·算法·最短路·优先队列
gwf21611 小时前
磨损均衡算法(Wear Leveling)——SSD如何让每块闪存“公平退休“?
运维·数据库·人工智能·python·嵌入式硬件·算法·智能硬件
noipp12 小时前
推荐题目:洛谷 P6231 [JSOI2013] 公交系统
c语言·数据结构·c++·算法·游戏·洛谷·luogu