当前位置: 首页 > news >正文

算法学习——素数筛法

素数:一个大于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; } } }
http://www.jsqmd.com/news/351019/

相关文章:

  • 凝胶过滤层析
  • 每位漏洞赏金猎手必用的十大必备工具
  • 多糖纯化干货指南
  • 物联网传感器数据:大数据分析的黄金矿藏
  • JEX优化发展路径,数字金融平台进入深度建设期
  • P1775 石子合并(弱化版)
  • AI应用架构师晋升路径:技术专家 vs 管理路线,该怎么选?
  • 2026年如何选择最优质的加密软件与数据防泄露系统服务商进行评测? - 睿易优选
  • JEX强化基础结构,应对全球数字资产环境变化
  • LocalDate,LocalDateTime,Date,日期串相互转换
  • AT_abc360_c [ABC360C] Move It
  • 免密批量抓取日志并集中输出
  • P1057 [NOIP2008 普及组] 传球游戏 题解
  • CANN 生态安全基石:`cann-security-module` 如何构建可信 AI 执行环境
  • 备考2026执医,新课程推荐哪一个? - 医考机构品牌测评专家
  • Spring AI Alibaba 核心组件
  • CANN 生态工具链实战:用 `profiler` 项目深度优化模型性能
  • CANN 生态全景:`cann-toolkit` —— 一站式开发套件如何提升 AI 工程效率
  • 哪个执业医师课程通过率最高? - 医考机构品牌测评专家
  • 全网热议!2026年青岛实验室净化工程源头厂家排行 - 睿易优选
  • 从外包到大厂 AI 岗:我用 1 年时间踩平的 5 个职业坑
  • P7909 [CSP-J 2021] 分糖果
  • 学考赋能哪家优?泛微青蓝阁、考试星、酷学院、云学堂实力拆解
  • 低代码赋能供应商管理:打破管理壁垒,重塑供应链效能
  • CANN 生态新星:`minddata-dataset-engine` 如何加速 AI 数据 pipeline
  • 达梦数据库查重实战:多字段联合去重完整指南
  • 考临床执医,推荐听谁的课好? - 医考机构品牌测评专家
  • SSM基于J2EE的山西旅游网站的设计与实现iiqmx(软件+源码+数据库+调试部署+创建环境)带论文文档1万字以上,文末可获取,框架界面在最后面。
  • 2026中医执医刷题神器深度测评:如何选择高效备考工具? - 医考机构品牌测评专家
  • 维卡软化点与热变形试验设备:技术解析与操作指南