引入
为什么 不算素数?
素数有无穷多个,这个结论两千多年前就被证明了,它需要什么前提?
素数的分布看起来毫无规律,为什么还会有一个”定理”描述它?
正文
定义
设 是除 和 外的整数,如果 除了 和 外没有其他约数,则称 为素数(也称质数)。大于 且不是素数的整数称为合数。
为什么 不是素数
若 是素数,唯一分解定理就会失效:,分解方式无穷多。
把 排除在外,是为了保证分解的唯一性。这是定义的选择,不是发现。
| 数 | 类型 | 原因 |
|---|---|---|
| 素数(按上述定义) | 约数只有 | |
| 既非素数也非合数 | 排除以保唯一性 | |
| 不讨论 | 任何数都整除 | |
| 唯一的偶素数 |
素数有无穷多个
定理(欧几里得)
素数有无穷多个。
证明(反证法):
假设素数只有有限个,记为 。构造
则 除以任一 都余 ,所以 都不整除 。
但 ,必有素因数。这个素因数不在假设的列表中,矛盾。故素数有无穷多个。
证明的关键:构造一个”躲开所有已知素数”的数。这个技巧在数论中反复出现。
唯一分解定理
定理(算术基本定理)
设 是大于 的正整数,则 可以表示为有限个素数的乘积,且在不计次序的意义下表示唯一: 其中 为素数, 为正整数。
唯一性为什么重要:它保证了”分解”这件事有意义。若分解不唯一,” 的素因数”就无法定义。
素数定理
其中 表示不超过 的素数个数。
含义: 大约等于 。素数虽然有无穷多个,但密度趋于零。
即对于较小的 ,近似公式 也相当精确。例如当 时,误差不超过 :
| 量 | 值 |
|---|---|
| 实际 | |
| 近似 |
素数判定
| 方法 | 做法 | 复杂度 |
|---|---|---|
| 试除法 | 用 的素数试除 | |
| 埃拉托斯特尼筛法 | 筛去合数,留下素数 | |
| 米勒-拉宾 | 概率判定 | |
| AKS | 确定性多项式算法 |
试除只需到 :若 且 ,则 ,所以只需检查较小的因子。
与密码学的关系
RSA 加密的基础是:大整数分解很难,但验证乘积很容易。
| 操作 | 难度 |
|---|---|
| 两个大素数相乘 | 容易 |
| 把乘积分解回两个素数 | 极难 |
素数定理在这里的意义:它保证了”大素数足够多”,可以随时生成新的密钥。
常见误区
| 错误说法 | 问题 |
|---|---|
| ” 是素数” | 会破坏唯一分解 |
| ” 不是素数” | 是唯一的偶素数 |
| ”素数有有限个” | 欧几里得已证无穷 |
| ”素数定理给出了精确个数” | 是渐近估计 |
| ”所有奇数都是素数” | 、 是反例 |
引出
为什么排除 才能保证唯一分解?
素数定理的证明需要什么工具?为什么它属于解析数论?
是否存在无穷多对孪生素数?