news 2026/4/16 10:21:49

算法学习——素数筛法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
算法学习——素数筛法

素数:一个大于1的自然数,除了1和它本身以外不再有其他因数的数称为素数。

合数:一个大于1的自然数,除了1和它本身以外还有其他因数的数称为合数。

因数:整数a除以整数b(b≠0)的商正好是整数而没有余数,称b是a的因数。

一、试除法

一次次试看能不能被因子整除。

int is_prime(int n) { //这里用i<=n/i,防止溢出,如i=1e6 for (int i = 2;i <= n / i;i++) { if (n % i == 0) return 0; } return 1; }

二、埃式筛法——接近线性O(logN)

素数的倍数一定是合数。找出合数,剩下都是素数。

#include<iostream> #include<vector> using namespace std; const int n = 1e6 + 10; //创建一个bool数组来标记素数 //初始时假设所有数都是素数 vector <bool> isPrime(n + 1, true); int main() { //遍历2~sqrt(n)的所有数 for (int p = 2;p <= n / p;p++) { //如果p是素数 if (isPrime[p]) { //标记p所有的倍数为非素数 for (int i = p * p;i <= n;i += p) isPrime[i] = false; } } return 0; }

三、欧拉筛法——线性

埃式筛有一些重复标记,欧拉筛去除了这些标记。

整数唯一分解定理:任何大于1的正整数n都可以唯一分解为有限个质数的乘积,任何合数都有他对应的一个最小质因子。只通过这个最小质因子将其标记,这样就避免了重复标记。

每个数都只被它的最小质因数筛去。

#include<iostream> #include<bitset> using namespace std; const int maxn = 1e6 + 10; bitset<maxn> pri;//0为素数,1为合数 int primes[maxn]; int pp = 0; int main() { int N = 1e6; int cnt = 0; for (int i = 2;i <= N;i++) { if (!pri[i]) { primes[pp] = i; pp++; } for (int j = i;j <= pp;j++) { pri[primes[j] * i] = 1; if (i % primes[j] == 0) break; } } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/8 9:28:21

JEX强化基础结构,应对全球数字资产环境变化

近日&#xff0c;来自多方公开渠道的信息显示&#xff0c;JEX数字资产平台在既有上市规划基础上&#xff0c;对相关路径进行了阶段性结构优化与节奏调整。多位业内人士指出&#xff0c;此轮调整并非进程放缓&#xff0c;而是在当前全球数字资产环境复杂化背景下&#xff0c;对长…

作者头像 李华
网站建设 2026/3/24 4:17:14

多糖纯化干货指南

多糖是由醛糖或酮糖通过糖苷键连接而成的天然高分子多聚物&#xff0c;广泛存在于动物细胞膜、植物细胞壁及微生物细胞壁中&#xff0c;是构成生命体的重要分子基础。它不仅参与多种生命活动&#xff0c;还具备免疫调节、抗肿瘤、抗凝、降血糖等多种生物活性&#xff0c;在医药…

作者头像 李华
网站建设 2026/4/7 14:42:05

凝胶过滤层析

凝胶过滤层析&#xff08;又称尺寸排阻层析 / SEC、分子筛层析&#xff09;是生物大分子分离纯化的核心技术&#xff0c;核心逻辑是基于分子大小差异实现高效分离&#xff0c;广泛应用于蛋白、核酸、病毒等生物样品的脱盐、纯化与分析。 一、核心原理 凝胶过滤层析的核心是多…

作者头像 李华
网站建设 2026/3/27 22:34:58

5万吨/天工业废水除铜除镍达标技术:Tulsimer重金属螯合树脂应用实践

在工业废水深度处理领域&#xff0c;大水量与严苛排放指标的双重约束&#xff0c;是困扰众多工业园区的技术痛点。本文结合广东某大型工业园区水质净化厂实际项目&#xff0c;针对每日50000m工业废水、总镍<0.1mg/L、总铜<0.3mg/L的排放要求&#xff0c;详解以Tulsimer C…

作者头像 李华
网站建设 2026/3/27 13:11:51

Docker 镜像拉取失败:一键修复指南

# Docker 镜像拉取失败&#xff1a;一键修复指南## &#x1f680; 快速诊断&#xff08;先执行这个&#xff09;bash bash << EOF echo " Docker 诊断报告 " echo "" echo ">>> 1. 检查 Docker 是否运行" systemctl is-active do…

作者头像 李华
网站建设 2026/4/15 19:40:06

CANN仓库架构全景 五层软件栈源码组织解析

目录 摘要 技术原理 架构设计理念解析 &#x1f3d7;️ 五层架构设计哲学 ⚡ 核心算法实现深度剖析 性能特性分析 实战部分 完整可运行代码示例 &#x1f6e0;️ 分步骤实现指南 步骤1&#xff1a;环境搭建和依赖安装 步骤2&#xff1a;模型转换和优化 &#x1f52…

作者头像 李华