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

算法入门|埃拉托斯特尼筛法,一张表筛出 1~120 所有质数

简介
课堂上用表格直观演示埃拉托斯特尼筛法,一次性筛选 1~120 全部素数。本文结合 PPT 表格图解拆解筛法原理、完整执行步骤、优缺点,附上可直接运行的 Java 代码,适合算法入门、课堂作业复习。

一、课堂演示图说明
屏幕表格范围:数字 2 ~ 120,表格通过标红 / 涂色标记非素数(合数),未被涂色的灰色数字就是质数(Prime numbers)。
核心规则:从最小素数 2 开始,不断标记当前素数的所有倍数,全部标记完成后,剩下未标记数字就是 1~120 范围内全部素数。
二、什么是埃拉托斯特尼筛法(埃氏筛)

  1. 基础概念
    质数(素数):大于 1,只能被 1 和自身整除的整数。
    埃氏筛(Sieve of Eratosthenes)是高效批量查找区间内所有素数的经典算法,不用逐个数字试除,通过倍数批量排除合数,大幅降低时间复杂度。
  2. 核心思想
    数字 2 是最小、唯一的偶素数;
    把 2 的所有倍数全部标记为合数(4、6、8、10…120);
    找到下一个未标记数字 3,标记 3 所有倍数(6、9、12…120);
    继续取下一个未标记数字 5,标记 5 所有倍数;
    循环到数字√上限(本案例上限 120,只需循环到 11),剩余未标记数字全部是素数。
    三、结合课堂表格,分步还原筛选 1~120 全过程
    步骤 1:初始化
    列出 2~120 全部数字,默认全部判定为素数(表格浅灰色底色)。
    数字 1 直接丢弃,1 既不是素数也不是合数。
    步骤 2:处理素数 2
    2 是素数,将表格里所有 2 的倍数标红:
    4,6,8,10,12…120 全部标记为合数。
    表格中所有偶数列数字被涂色,偶数除 2 外都不是素数。
    步骤 3:处理下一个未标记数字 3
    3 是素数,标记 3 全部倍数:
    6,9,12,15,18…120
    6、12 等已经被 2 标记,重复标记不影响结果。
    步骤 4:下一个未标记数字 5
    标记 5 倍数:10、15、20…120,表格末尾整十数字全部变红。
    步骤 5:持续循环到√120≈11
    依次处理 7、11:
    7 的倍数:14、21、28…119
    11 的倍数:22、33、44…121(超出 120 截止)
    步骤 6:筛选结束
    所有被涂色标红的是合数;表格中保持浅灰色、无填充的数字,就是 2~120 全部素数。
    图右侧标注Prime numbers 2,代表 2 是第一个基础素数。
    四、埃氏筛优缺点分析
    优点
    批量筛选,时间复杂度 O (n log log n),远优于逐个试除暴力解法;
    逻辑直观,表格可视化后极易理解,课堂教学首选;
    只需一次遍历就能得到区间全部素数,适合打素数表、预处理。
    缺点
    需要开辟长度为 n 的布尔数组存储标记,有额外空间开销;
    筛选超大数字区间时内存占用会快速上升;
    会重复标记同一个合数(如 6 同时是 2 和 3 倍数),存在少量重复操作。
    五、Java 完整代码实现(筛出 1~120 素数,对应课堂案例)
publicclassEratosthenesSieve{publicstaticvoidmain(String[]args){// 上限和课堂表格一致:120intmax=120;// 布尔数组标记是否为素数,默认true代表初始判定为素数boolean[]isPrime=newboolean[max+1];// 初始化:2~120全部设为素数for(inti=2;i<=max;i++){isPrime[i]=true;}// 埃氏筛核心循环,循环到平方根即可intsqrtMax=(int)Math.sqrt(max);for(inti=2;i<=sqrtMax;i++){// 如果当前数字是素数,批量标记它的所有倍数if(isPrime[i]){// 从i*i开始标记,更小倍数已经被更小素数标记过for(intj=i*i;j<=max;j+=i){isPrime[j]=false;}}}// 输出1~120所有素数,和课堂表格结果对照System.out.println("1~120之间所有素数:");for(inti=2;i<=max;i++){if(isPrime[i]){System.out.print(i+" ");}}}}

六、学习总结
课堂上的数字表格把抽象的埃氏筛算法直观可视化,让我看懂批量排除合数的核心逻辑。对比暴力逐个试除判断素数,埃氏筛通过倍数批量标记极大提升了运算效率,适合一次性获取区间全部素数。
同时我也理解了算法取舍:埃氏筛以少量内存空间换取更低时间复杂度,不同业务场景要根据数据规模选择合适素数查找方案。本次演示案例上限 120 规模小,表格形式清晰易懂,是入门数论算法很好的练习案例。

http://www.gsyq.cn/news/1561984.html

相关文章:

  • echarts-for-weixin:微信小程序数据可视化架构设计与企业级应用实践
  • 5秒无损转换B站缓存视频:m4s-converter快速入门指南
  • 广州白蚁防治哪家强?对比5家实测,青林微创探巢完胜 - 博客万
  • 如何3分钟完成Windows与Office永久激活:KMS_VL_ALL_AIO智能激活指南
  • 2026 临沂实木全屋定制口碑 TOP5:回访 5000 + 入住满 1 年业主 - 新闻快传
  • 2026年林芝精密钢管工厂哪家强,冷拔精密无缝钢管/45# 冷拔无缝钢管,精密钢管源头厂家哪家专业 - 品牌推荐师
  • Windows系统文件imm32.dll丢失找不到问题解决
  • PIC单片机动态功耗管理实战:Doze、Idle与PMD模式详解
  • 2026 鲁南无贴皮实木全屋定制工厂综合推荐 TOP6!50000 + 业主实测 - 新闻快传
  • 2026南京奢品履约白皮书,看图报价即到店价,无临时砍价 - 讯息早知道
  • 2026:宁波甲醛检测治理公司深度调研测评,从资质、售后维度对比,本地直营选宁波博豪环保更稳妥 - 专注室内空气检测治理
  • 2026:宁波甲醛检测治理公司全维度消费者测评,从门店、服务流程、售后回访综合对比,宁波博豪环保服务体系更贴合本地业主需求 - 专注室内空气检测治理
  • Kafka-UI实战部署指南:10分钟构建企业级可视化监控平台
  • 2026年6月最新帝舵中国官方售后服务热线客服电话地址网点 - 亨得利官方服务中心
  • 2026南京闲置奢品出手指南|不虚高报价,线上线下价一致 - 讯息早知道
  • 2026年刀片刺绳厂家推荐榜单 - 资讯速览
  • 2026海口卖黄金常见5个套路及识别方法:避坑科普干货 - 博客万
  • 2026 临沂同城驾校实地测评|兰山区 / 河东区 / 罗庄区 / 北城新区驾校报名哪家负责?考驾照正规驾校横向对比 - 吉林同城获客
  • 《龙虾调度等保三级的常态化合规指南》
  • GPT-5.5:首个具备任务闭环能力的数字协作者
  • 2026郴州黄金回收最新行情及靠谱门店排名|实时金价+避坑案例+内行干货 - 小仙贝贝
  • 2026年6月最新帝舵中国官方售后服务热线地址及客服网点 - 亨得利官方服务中心
  • 临沂同城靠谱驾校实测测评|兰山区 / 河东区 / 罗庄区 / 北城新区考驾照报名哪家负责?正直驾校综合实力详解 - 吉林同城获客
  • 餐饮油烟治理怎么选?苏州利宝油烟净化一体机一站式合规方案 - 新闻快传
  • DeepSeek-R1 评估与系统(Evaluation Systems)【左扬精讲】—— 从 GSM8K/MMLU 到 LLM-as-Judge 的工业级评估方法论
  • 2026 年 6 月核心动态:北京播威全国联保服务网点查询与避坑建议 - 亨得利官方售后
  • 微软官方授权售后维修服务中心2026年6月最新地址核验白皮书 - GrowthUME
  • 2026宁波黄金回收攻略,5家正规门店实测,实时行情价回收 - 商业快讯早知道
  • 2026 年深圳市厨卫屋顶地下室防水修缮三家横向测评:吉修匠 99.8 分五星榜首 - 吉修匠
  • 2026年6月可靠的边坡防护网供货厂家怎么选,草原网/草原围网/牛栏网/钢筋网片/边坡防护网,边坡防护网供应厂家有哪些 - 品牌推荐师