1. 核心定义
一种简单且历史悠久的算法,用于找出一定范围内(小于等于 )的所有素数。
2. 算法步骤
- 初始化:列出从 到 的所有整数。
- 筛选:
- 找到列表中最小的未被标记的数 (初始为2),它是一个素数。
- 标记 的所有倍数()为合数(划去)。
- 找到下一个未被标记的数,重复上述步骤。
- 终止:当 时停止,剩下的所有未被标记的数即为素数。
3. 性能与特点
- 时间复杂度:。非常高效,接近线性。
- 局限性:适用于寻找中小范围内的素数表。对于生成超大素数(如 RSA 密钥生成),通常不使用筛选法,而是使用 素性检测(如 Miller-Rabin,后续章节会学)。
4. 示例 ()
- 列表:2, 3, 4, 5, 6, 7, 8, 9, 10
- :划去 4, 6, 8, 10。剩余:2, 3, 5, 7, 9
- :划去 9。剩余:2, 3, 5, 7
- (接近边界),结束。素数为 。