筛法先设定查找范围
埃拉托色尼筛法的任务,是找出一个给定上限以内的质数。先列出该范围中大于1的整数作为候选,再从最小的质数开始,划去它的倍数;重复处理后,未被划去的候选数即为该范围内的质数。筛选过程不是猜测,而是一套可以逐步检查的算术程序。
例如,若目标是找某个上限以内的所有质数,起步要先明确上限,并排除1,因为1不是质数。之后每次选择当前未划去的最小数,标记它的倍数为合数。这里的例子只解释算法结构;具体范围的完整列表应按步骤计算并验证,不从简述中随意补充结果。
为什么划去倍数有效
合数可以分解为比它小的整数相乘,因此在从小到大检查候选数时,合数会作为某个较小质数的倍数被排除。以某个质数为基数划去倍数,是利用因数关系缩小候选集合;留下来的数没有在前面步骤中被发现有小于自身的质因数,因而符合筛法的筛选结论。
这一说明谈的是算法逻辑,而不是数字的象征意义。筛过以后留下的质数,是由“是否有非平凡因数”这一数学定义决定的;同一个数字不会因生日、抽签或个人偏好而改变质数属性。把数论性质和文化数字联想区分开,能避免把数学术语误当成占卜依据。
古代归属与现代介绍分开
数学史资料把这种筛法归于古希腊数学家埃拉托色尼。介绍其历史时宜采用‘通常称为’或‘归于埃拉托色尼’的表达,避免将简短的算法说明扩写成没有证据支持的详细发明故事、传播路线或精确首创时刻。方法的名称和算法原理是本文可以重点说明的部分。
MacTutor的质数专题以及Museum of Algorithms的算法条目分别从数学史和算法展示角度介绍埃拉托色尼筛法。两处来源支持算法及其历史归属概述;若要讲更完整的古代数学背景,应继续核对来源中的具体历史论述,而不是只凭算法名称补写人物传记。
筛法与“幸运数字”问题不同
质数筛法回答的是某个范围内哪些整数满足质数定义。它不能说明某个质数会给人带来好运,也不能从一个人的生活资料推导出其专属号码。数字是否适合某种实际用途,取决于用途本身;数论算法不提供命运预测。
学习时可把流程记为:列出大于1的候选整数,依次选取尚未划去的最小候选,划掉它的倍数,直到达到适合该范围的检查终点,再读取剩余数。具体实现可由数学书或算法页面进一步核对。这里的重点是筛选原理和历史归属,不把质数包装成神秘号码。
实现时,候选数的标记状态会逐轮减少,筛法的优势正来自先排除已知合数,而不是对每个整数反复尝试所有可能除数。文章无需把程序优化细节混入古代归属介绍;对于初学者,理解“保留最小未划数、划去其倍数、继续下一轮”已经抓住核心。若需要讲复杂度或现代代码实现,应引用更具体的算法资料。
参考资料
- MacTutor:质数历史专题 — 介绍质数及埃拉托色尼筛法的历史背景与传统归属。
- Museum of Algorithms:埃拉托色尼筛法 — 展示筛法的基本原理及其数论算法性质。