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

暂无。。。

相关推荐
坚持编程的菜鸟7 小时前
模拟实现memcpy
c语言·算法·模拟实现my_memcpy
wabs6667 小时前
关于图论【最短路径之Bellman_ford 算法|卡码网94.城市间货物运输的思考】
数据结构·算法·图论·卡码网·bellman_ford·求最短路径
MrZhao4007 小时前
On-Policy Distillation(OPD):为什么大模型后训练要在学生自己的轨迹上蒸馏?
算法
朱峥嵘(朱髯)7 小时前
数据库如何根据全表 NDV 估算子集的 NDV
数据库·算法
jjjava2.07 小时前
牛客算法题(第四期)
算法
雪碧聊技术7 小时前
力扣 回溯法 | LCR 020. 回文子串
javascript·算法·leetcode
wabs6667 小时前
关于哈希表【力扣454.四数相加II的思考】
数据结构·算法·leetcode·散列表
我能坚持多久8 小时前
优选算法——专题一双指针(上):附四道例题详解
c++·学习·算法
Tim_108 小时前
【C++】023、移动语义&深拷贝
开发语言·c++·算法
月光船幽幽8 小时前
锁死后干预有效性的关键突破
人工智能·python·算法