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

暂无。。。

相关推荐
S01d13r5 小时前
LeetCode 解题思路 48(编辑距离、只出现一次的数字)
算法·leetcode·职场和发展
C_Liu_5 小时前
C语言:深入理解指针(5)
java·c语言·算法
small_wh1te_coder5 小时前
从经典力扣题发掘DFS与记忆化搜索的本质 -从矩阵最长递增路径入手 一步步探究dfs思维优化与编程深度思考
c语言·数据结构·c++·stm32·算法·leetcode·深度优先
枫景Maple5 小时前
LeetCode 45. 跳跃游戏 II(中等)
算法·leetcode
এ᭄画画的北北5 小时前
力扣-236.二叉树的最近公共祖先
算法·leetcode
z人间防沉迷k7 小时前
堆(Heap)
开发语言·数据结构·笔记·python·算法
不二狗7 小时前
每日算法 -【Swift 算法】Two Sum 问题:从暴力解法到最优解法的演进
开发语言·算法·swift
LabVIEW开发7 小时前
LabVIEW中样条插值实现及应用
算法·labview知识
LabVIEW开发7 小时前
LabVIEW机械振动信号分析与故障诊断
算法·labview知识·labview开发案例
啊我不会诶8 小时前
CF每日5题(1300-1500)
算法·深度优先·图论