# 讲义 08：质数与埃拉托斯特尼筛法

> 配套 demo：[`viz/math/08-sieve-primes.html`](../../viz/math/08-sieve-primes.html)

## 适用学段
小学五年级下"因数与倍数"中的"质数与合数"。

## 教学目标
- 知道：**质数**（素数）= 只有 1 和它本身两个因数的数；**合数** = 除了 1 和本身还有其他因数的数
- 会：判断 100 以内的数是质数还是合数；列出 100 以内的所有质数（共 25 个）
- 理解：质数为什么"稀疏不规则"，以及一种系统找质数的方法——**埃氏筛法**

## 核心概念

### 1. 质数 / 合数 / 1
| 类型 | 定义 | 例子 |
|------|------|------|
| 质数 | 只有 1 和本身两个因数 | 2, 3, 5, 7, 11, 13, ... |
| 合数 | 除 1 和本身还有其他因数 | 4, 6, 8, 9, 10, 12, ... |
| 特殊 | 既不是质数也不是合数 | 1（只有一个因数） |
| 特殊 | / | 0（不算因数体系内） |

**注意：2 是最小的质数，也是唯一的偶质数。**

### 2. 埃拉托斯特尼筛法（Eratosthenes' Sieve）
古希腊数学家发明，用来系统地找出某个范围内的所有质数。

**步骤**：
1. 写出 2 ~ N 的所有整数
2. 圈出第一个未划掉的数（一定是质数）
3. 划掉这个质数的所有**倍数**（除了它自己）
4. 回到第 2 步，继续圈下一个未划掉的数
5. 直到处理完 √N 以内的所有数，剩下的全是质数

> 为什么只要处理到 √N？因为如果 N = a × b 且 a ≤ b，那么 a ≤ √N。也就是说，N 的**最小质因数**一定 ≤ √N。

### 3. 100 以内的 25 个质数
```
2, 3, 5, 7, 11, 13, 17, 19, 23, 29,
31, 37, 41, 43, 47, 53, 59, 61, 67, 71,
73, 79, 83, 89, 97
```

## 教学路径

### 1. 导入（5 分钟）
让学生 "找因数比赛"：
- 6 的因数有几个？（4 个：1, 2, 3, 6）
- 7 的因数有几个？（2 个：1, 7）
- 12 的因数有几个？（6 个）

引导：有些数因数特别少，**只有 1 和自己** —— 这就是"质数"。

### 2. 探究（15 分钟）— 用 demo
打开筛法 demo，按步骤动画演示：
- 第 1 步：圈 2，划掉 4, 6, 8, ..., 100（所有 2 的倍数）
- 第 2 步：圈 3，划掉 6, 9, 12, ...
- 注意：6 已经被 2 划过了，这是好事——说明"埃氏筛"会自动避免重复
- 继续 5、7
- 7 之后呢？√100 = 10，所以处理到 7 就够了，剩下的都是质数

### 3. 抽象（10 分钟）
- "为什么处理到 7 就够了？" 用 11 × 9 = 99 来反推：如果某数 ≤ 100 是合数，那它一定有 ≤ 10 的质因数
- 质数的分布**不规则**——这是为什么至今没有"公式计算第 n 个质数"

### 4. 巩固（10 分钟）
- 让学生说出 50 以内的所有质数
- 给定 67，判断是质数还是合数（试 2, 3, 5, 7：都不能整除 → 质数）

## 例题

### 基础题
1. 100 以内最大的质数是？（97）
2. 50 ~ 60 之间有几个质数？（53, 59 — 共 2 个）

### 进阶题
3. **判断 91 是不是质数**？
   - 试 2: 不能；试 3 (9+1=10 不是3的倍数): 不能；试 5: 不能；试 7: 91÷7=13 ✓
   - 所以 91 = 7 × 13，是合数
4. **分解质因数 120**
   - 120 = 2 × 60 = 2 × 2 × 30 = 2 × 2 × 2 × 15 = 2³ × 3 × 5

### 拓展
5. **孪生质数**：相差 2 的两个质数（如 11 和 13、17 和 19）。100 以内有几对孪生质数？
6. **哥德巴赫猜想**：任何大于 2 的偶数都能表示为两个质数之和（数学界尚未完全证明）。验证：100 = 3 + 97 = 11 + 89 = ...

## 易错点

| 错误 | 矫正 |
|------|------|
| "1 是质数" | 1 只有一个因数，不算质数也不算合数 |
| "2 不是质数（因为偶数）" | 2 是唯一的偶质数 |
| 漏掉 2、3 这种小质数 | 强调质数定义不限于"奇数" |
| 用 6 的倍数 ÷ 7 这种试法 | 应只用**质数**作为试除数 |

## 配套 demo 用法
- 网格显示 2 ~ N（默认 N=100）
- 点"下一步"逐步演示筛法
- 或点"自动播放"看完整动画
- 已划掉的数变灰，圈出的质数高亮
