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

算法学习-素数筛法【埃氏筛法、线性筛法】

普通筛法:
核心思路:
使用一个布尔数组记录此数是否为素数,
从2~n便利,
如果是此数记录为素数
向后维护数组,此素数的K倍均为非素数,直到大于n.
^时间复杂度O(nlogn)
便利+维护
埃式筛法
初式:
同线性筛法,依次遍历向后维护
但是对每个数均进行倍数标记
直到sqrt(n)
存在重复标记
因而时间复杂度来到了O(nloglogn)
便利部分+维护
在Python中,由于循环较慢,使用NumPy优化的埃氏筛法(利用切片赋值)比纯Python的线性筛法快。
即C/C++中使用线性筛数,Python使用埃式筛法
线性筛法(欧拉筛)
基于以上的思考,对素数表的标记继续优化
使每个数都被其最小的质因数筛掉

for(int j=1;i*primes[j]<=n;j++){ vis[i*primes[j]]=true; if(i%primes[j]==0) break; }

for j in primes: if i*j>n: break vis[i*j]=True if i%j==0: break #python版优化
不过python用埃氏筛就好(

http://www.jsqmd.com/news/24998/

相关文章:

  • Day 18
  • Jenkins Share Library教程 —— 企业级 Jenkins Shared Library 实战示例
  • STM32之fromelf生成bin和反汇编文件
  • 25.10.28联考题解
  • 2025年河南工业大学2025新生周赛(1)
  • excel查找满足条件的第二项
  • 【传奇开心果系列】基于Flet框架实现的跷跷板动画自定义模板特色和实现原理深度解析 - 指南
  • CF506E Mr. Kitayutas Gift
  • 常用存储器介绍
  • 记录一次成功的springBoot
  • 2025.10.28总结
  • 代码大全2阅读笔记(1)
  • 进程与进程间通信(IPC)
  • QT:键盘事件(添加资源图片)
  • 2025.10.28
  • docker desktop:更新WSL2+安装nginx
  • # 学代码--看懂了但是不会写
  • 2025-10-28 aoao Round 比赛总结
  • P11307 [COTS 2016] 建造费 Pristojba 分析
  • 程序员如何打破职业瓶颈?先搬开这3块绊脚石。
  • 乱学点东西#2 :菠萝/蓝莓/Boruvka算法
  • 文件清理,推荐几款常用软件
  • AI时代的设计师:从工具到“超人”的进化之路
  • MyBatis 动态 SQL 实现原理 - Higurashi
  • bililun
  • 《程序员修炼之道:从小工到专家》观后感第二篇
  • 【学习笔记】数据结构全家桶
  • 社区
  • 「Gym 102759I」Query On A Tree 17
  • Mybatis使用简述