相关笔记: 4.2 整数表示与算法 | 4.4 解同余方程
概览
本节系统介绍了素数(prime)与最大公约数(greatest common divisor)的核心理论,这是数论的基石内容,也是现代密码学的重要数学工具。
- 素数的定义:大于1且仅被1和自身整除的正整数,其余大于1的正整数为合数(composite)
- 算术基本定理(Fundamental Theorem of Arithmetic):每个大于1的整数都能唯一分解为素数的乘积(按非递减序排列)
- 素数定理(Prime Number Theorem):,刻画素数的渐近分布
- 素数有无穷多个,欧几里得给出了经典的反证法证明
- 试除法(Trial Division):若 为合数,则 必有不超过 的素因子
- 埃拉托斯特尼筛法(Sieve of Eratosthenes):高效找出不超过给定整数的一切素数
- 最大公约数 与最小公倍数 ,满足
- 欧几里得算法(Euclidean Algorithm):通过反复取余高效计算 ,复杂度为
- 扩展欧几里得算法:求出 中的贝祖系数
- 贝祖定理(Bézout’s Theorem): 可表示为 和 的整数线性组合
- 与 3.2 函数的增长 的联系:欧几里得算法的除法次数为 ,是高效算法的典型范例
一、知识结构总览
graph TB A["4.3 素数与最大公约数<br>Primes and Greatest Common Divisors"] --> B["素数 Primes"] A --> C["素性测试与筛法"] A --> D["素数分布与猜想"] A --> E["最大公约数 GCD"] A --> F["最小公倍数 LCM"] A --> G["欧几里得算法"] A --> H["扩展欧几里得与贝祖定理"] A --> I["算术基本定理与唯一分解"] B --> B1["素数定义 Definition 1"] B --> B2["合数定义"] B --> B3["1 既非素数也非合数"] C --> C1["试除法 Trial Division"] C --> C2["Theorem 2: 合数有 ≤ √n 的素因子"] C --> C3["埃拉托斯特尼筛法 Sieve"] C --> C4["Miller-Rabin / AKS 素性测试"] D --> D1["素数无穷多 Theorem 3"] D --> D2["素数定理 Theorem 4: π(x) ~ x/ln x"] D --> D3["梅森素数 Mersenne Primes"] D --> D4["哥德巴赫猜想 / 孪生素数猜想"] D --> D5["等差数列中的素数"] E --> E1["GCD 定义 Definition 2"] E --> E2["互素 Relatively Prime"] E --> E3["两两互素 Pairwise Relatively Prime"] E --> E4["素因子分解法求 GCD"] F --> F1["LCM 定义 Definition 5"] F --> F2["Theorem 5: ab = gcd·lcm"] G --> G1["Lemma 1: gcd(a,b) = gcd(b,r)"] G --> G2["欧几里得算法 Algorithm 1"] G --> G3["复杂度: O(log b) 次除法"] H --> H1["贝祖定理 Theorem 6"] H --> H2["贝祖系数 Bézout Coefficients"] H --> H3["反向代入法"] H --> H4["扩展欧几里得算法"] H --> H5["Lemma 2: gcd(a,b)=1 且 a|bc ⇒ a|c"] H --> H6["Lemma 3: p|a₁a₂...aₙ ⇒ p|某 aᵢ"] H --> H7["Theorem 7: 同余式消去律"] I --> I1["算术基本定理 Theorem 1"] I --> I2["唯一分解的证明(反证法)"]
二、核心思想
核心思想
本节围绕两个核心主题展开:素数与最大公约数。素数是正整数的”原子”——每个大于1的整数都可以唯一分解为素数的乘积(算术基本定理),正如化学中每个分子由原子组成。最大公约数则刻画了两个整数之间”最大的公共度量”,而欧几里得算法通过辗转相除的巧妙策略,将 GCD 的计算从”需要先分解素因子”的低效方法,提升到 的高效算法。贝祖定理进一步揭示了 GCD 的代数本质——它等于两个整数所有整数线性组合中的最小正整数。这些结果不仅是数论的基石,更是 4.6 密码学 中 RSA 等公钥密码系统的数学基础。
1. 素数与合数
素数与合数(Definition 1)
- 大于1的正整数 如果仅被1和 整除,则称 为素数(prime)
- 大于1的正整数如果不是素数,则称为合数(composite)
- 注意:整数 1 既不是素数也不是合数(它只有一个正因子)
- 等价判定: 是合数当且仅当存在整数 使得 且
判断素数
- 是素数:其正因子只有 和
- 是合数: 且
2. 算术基本定理
算术基本定理(Theorem 1: The Fundamental Theorem of Arithmetic)
每个大于1的整数都可以唯一地表示为一个素数或两个及以上素数的乘积,其中素因子按非递减顺序排列。
即若 ,则存在唯一的表示 其中 为素数,。
素因子分解(Example 2)
3. 试除法与素性判定
合数的素因子上界(Theorem 2)
若 是合数,则 有一个不超过 的素因子。
证明:若 是合数,由定义存在因子 满足 。设 ,其中 。
我们证明 或 。若 且 ,则 ,矛盾。
因此 或 。该因子本身是素数,或者由算术基本定理,它有一个比自身更小的素因子。无论哪种情况, 都有一个不超过 的素因子。
用试除法验证 101 是素数(Example 3)
,不超过 的素数只有 。
检验: 均不整除。因此 是素数。
用试除法分解 7007(Example 4)
- 不整除, 不整除, 不整除
- 不整除,
- 是素数,分解完毕
4. 埃拉托斯特尼筛法
埃拉托斯特尼筛法(Sieve of Eratosthenes)
一种找出不超过给定正整数 的所有素数的算法:
- 列出 到 的所有整数
- 从第一个素数 开始,删除所有 的倍数( 本身保留)
- 找到下一个未被删除的数(即下一个素数),删除其所有倍数
- 重复步骤3,直到处理完不超过 的所有素数
- 剩余未被删除的数即为不超过 的所有素数
原理:不超过 的合数必有不超过 的素因子(Theorem 2),因此只需筛去 以内各素数的倍数即可。
找出不超过 100 的素数
不超过 的素数为 。依次筛去它们的倍数后,剩余的素数为:
5. 素数的无穷性
素数有无穷多个(Theorem 3)
证明(欧几里得反证法):
假设素数只有有限个,设为 。令
由算术基本定理, 是素数或可分解为素数的乘积。但没有任何 能整除 :若 ,则 ,而素数不能整除 ,矛盾。
因此存在不在列表中的素数( 本身或 的素因子),与假设矛盾。
注意:此证明中 本身不一定是素数(例如 )。这是一个非构造性的存在性证明。
6. 素数定理与素数分布
素数定理(Theorem 4: The Prime Number Theorem)
设 为不超过 的素数个数,则 即 。
该定理由 Hadamard 和 de la Vallée-Poussin 于1896年利用复变函数理论证明。所有已知证明都相当复杂。
推论:在 附近随机选取一个正整数,它是素数的概率约为 。例如,在 附近找到素数的概率约为 。
素数计数函数 的近似
168 144.8 1.161 1,229 1,085.7 1.132 9,592 8,685.9 1.104 78,498 72,382.4 1.084 664,579 620,420.7 1.071 5,761,455 5,428,681.0 1.061 50,847,534 48,254,942.4 1.054 455,052,512 434,294,481.9 1.048 比值逐渐趋近于 ,验证了素数定理。
梅森素数(Mersenne Primes)
形如 ( 为素数)的素数称为梅森素数。注意 在 不是素数时一定是合数。
- ,,, 都是梅森素数
- 不是梅森素数
- 判定 是否为素数有高效的 Lucas-Lehmer 测试
- 目前已知最大素数几乎都是梅森素数,由 GIMPS(Great Internet Mersenne Prime Search)分布式计算项目发现
7. 最大公约数与最小公倍数
最大公约数(Definition 2)
设 和 是不全为零的整数。同时整除 和 的最大整数 称为 和 的最大公约数,记作 。
互素与两两互素(Definition 3 & 4)
- 时,称 和 互素(relatively prime)
- 对一组整数 ,若对所有 都有 ,则称它们两两互素(pairwise relatively prime)
互素与两两互素(Example 13)
- ,,,故 两两互素
- ,故 不是两两互素
用素因子分解求 GCD 和 LCM
设 ,,则:
用素因子分解求 GCD(Example 14)
,
GCD 与 LCM 的关系(Theorem 5)
设 和 为正整数,则
8. 欧几里得算法
欧几里得算法的核心引理(Lemma 1)
设 ,其中 为整数,则
证明:只需证明 的公因子集合与 的公因子集合相同。
- 若 且 ,则 ,故 也是 和 的公因子
- 若 且 ,则 ,故 也是 和 的公因子
因此 。
欧几里得算法(Algorithm 1: The Euclidean Algorithm)
输入:正整数 (设 )
步骤:反复应用带余除法
其中 ,。由 Lemma 1:
结论:最后一个非零余数 即为 。
复杂度:需要 次除法(将在第5.3节证明)。
欧几里得算法求
最后一个非零余数为 ,故 。
欧几里得算法求 (Example 16)
0 662 414 1 248 1 414 248 1 166 2 248 166 1 82 3 166 82 2 2 4 82 2 41 0 。
9. 贝祖定理与扩展欧几里得算法
贝祖定理(Theorem 6: Bézout's Theorem)
若 和 为正整数,则存在整数 和 使得
满足此等式的 和 称为 和 的贝祖系数(Bézout coefficients),该等式称为贝祖恒等式(Bézout’s identity)。
反向代入法求贝祖系数(Example 17)
求 的贝祖系数。
正向(欧几里得算法):
反向代入: 将 代入: 将 代入:
因此 。
扩展欧几里得算法
在欧几里得算法的同时,维护两组系数 和 ,使得 。
初始化:
递推():
最终 。
扩展欧几里得算法(Example 18)
对 ,商序列 :
0 252 1 54 1 0 1 198 3 36 0 1 2 54 1 18 1 -1 3 36 2 0 -3 4 4 18 4 -5 验证:。
10. 贝祖定理的重要推论
互素整数的整除性质(Lemma 2)
若 为正整数, 且 ,则 。
证明:由贝祖定理,存在整数 使得 。两边乘以 : 由于 (显然)且 (因为 ),故 。
素数整除乘积的性质(Lemma 3)
若 为素数且 (每个 为整数),则 对某个 成立。
这是算术基本定理中”唯一分解”部分证明的关键引理。
同余式的消去律(Theorem 7)
设 为正整数, 为整数。若 且 ,则
证明: 意味着 。由 Lemma 2, 蕴含 ,即 。
11. 算术基本定理的唯一性证明
算术基本定理——唯一性
每个大于1的正整数至多有一种按非递减顺序排列的素因子分解方式。
证明(反证法):假设正整数 有两种不同的素因子分解: 其中 ,。
消去两边的公共素数后得到: 其中等式两边的素数互不相同,。
由 Lemma 3, 必须整除右边的某个 。但素数不能整除另一个不同的素数,矛盾。
三、补充理解与易混淆点
补充理解
补充1:素性测试的算法演进——从试除法到 AKS
素性测试(primality testing)是计算数论的核心问题之一。试除法的时间复杂度为 ,对于大整数效率不足。实际应用中广泛使用的是 Miller-Rabin 概率性素性测试(Miller & Rabin, 1980),它基于费马小定理的逆命题,可以在 时间内以 的错误概率判定 是否为素数(Rosen, 2019, Section 4.6)。2002年,Agrawal、Kayal 和 Saxena 发现了 AKS 素性测试,这是第一个确定性多项式时间的素性测试算法,复杂度为 位运算(Agrawal, Kayal & Saxena, 2002, “PRIMES is in P”, Annals of Mathematics)。这一发现解决了计算复杂性理论中的一个长期开放问题。值得注意的是,虽然素性测试有多项式时间算法,但整数分解(integer factorization)至今没有已知的多项式时间算法,这一不对称性正是 RSA 密码系统安全性的基础。
- PRIMES is in P (原始论文) — AKS 算法的原始论文
- Miller-Rabin 素性测试可视化 — Wikipedia 上的详细说明
来源:Agrawal, M., Kayal, N. & Saxena, N. (2004). “PRIMES is in P.” Annals of Mathematics, 160(2), 781–793. 来源:Rivest, R. L., Shamir, A. & Adleman, L. (1978). “A Method for Obtaining Digital Signatures and Public-Key Cryptosystems.” Communications of the ACM, 21(2), 120–126.
补充2:欧几里得算法与斐波那契数列——Lamé 定理
欧几里得算法的效率分析是算法复杂度理论的经典案例。1845年,法国数学家 Gabriel Lamé 证明了:用欧几里得算法计算 ()所需的除法次数不超过 ,其中 为黄金比例(Lamé, 1844)。更精确地说,除法次数最多为 ( 的十进制位数)。最坏情况出现在 和 是相邻的斐波那契数时。例如 恰好需要 次除法。这一结果与 3.2 函数的增长 中的大O分析直接相关:欧几里得算法的除法次数为 ,其中每次除法涉及 位数的运算,因此总位运算复杂度为 。这一效率使欧几里得算法成为实际应用中最常用的 GCD 计算方法。
- 欧几里得算法的可视化演示 — 逐步展示欧几里得算法的执行过程
- 斐波那契数列与欧几里得算法的关系 — Wikipedia 上的详细分析
来源:Lamé, G. (1844). “Note sur la limite du nombre de divisions dans la recherche du plus grand commun diviseur entre deux nombres entiers.” Comptes Rendus de l’Académie des Sciences, 19, 867–870. 来源:Knuth, D. E. (1997). The Art of Computer Programming, Vol. 2: Seminumerical Algorithms (3rd ed.), Addison-Wesley, Section 4.5.3.
易混淆点
误区1:欧几里得证明中 一定是素数
- ❌ 认为 一定是素数,从而得出”素数公式”
- ✅ 不一定是素数!例如
- ✅ 证明的关键是: 要么本身是素数,要么有一个不在原列表中的素因子——无论哪种情况,都说明存在列表之外的素数
- ⚠️ 这是一个非构造性证明,它证明了”存在更大的素数”,但没有告诉我们那个素数具体是多少
- ⚠️ 不存在能对所有正整数 都输出素数的多项式 (见教材 Example 6)
误区2:互素 vs 两两互素
- ❌ 认为”一组整数互素”等价于”它们两两互素”
- ✅ “互素”(relatively prime)通常指 ,即所有数的最大公约数为1
- ✅ “两两互素”(pairwise relatively prime)要求更强:任意两个数的 GCD 都为1
- ✅ 两两互素 ⇒ 互素,但反之不成立
反例:
- ,所以它们”互素”
- 但 ,所以它们不是”两两互素”
这一区别在后续学习中国剩余定理(4.4 解同余方程)时非常重要。
四、习题精选
习题概览
题号范围 核心考点 难度 1-2 判断素数 ⭐ 3-4 素因子分解 ⭐ 7-8 试除法伪代码 ⭐⭐ 9-10 梅森数与素数的关系 ⭐⭐ 14-15 求与给定数互素的整数 ⭐ 16-17 判断两两互素 ⭐⭐ 24-25 用素因子分解求 GCD ⭐⭐ 26-27 用素因子分解求 LCM ⭐⭐ 28-29 验证 ⭐⭐ 32-33 欧几里得算法求 GCD ⭐⭐ 34-35 欧几里得算法的除法次数 ⭐⭐ 39 反向代入法求贝祖系数 ⭐⭐⭐ 31 证明 ⭐⭐⭐ 36-37 与 的 GCD ⭐⭐⭐⭐
题1:判断素数
题目
判断以下整数是否为素数:。
解答
- ,合数
- :,检验 均不整除,素数
- :,检验 均不整除,素数
- :,检验 均不整除,素数
- ,合数( 被 整除)
- ,合数
题2:素因子分解
题目
求以下整数的素因子分解:。
解答
题3:欧几里得算法求 GCD
题目
使用欧几里得算法求 。
解题思路提示
反复执行带余除法,记录每步的商和余数,直到余数为0。最后一个非零余数即为 GCD。
解答
最后一个非零余数为 ,故 。
题4:用扩展欧几里得算法求贝祖系数
题目
使用扩展欧几里得算法,将 表示为 和 的线性组合。
解题思路提示
先执行欧几里得算法得到商序列,然后利用递推公式 和 计算 和 。
解答
第一步:欧几里得算法
第二步:扩展欧几里得算法
初始化:
2 3 4 验证:。
题5:证明素数有无穷多个(变体)
题目
证明:存在无穷多个形如 的素数(即 的素数有无穷多个)。
解题思路提示
模仿欧几里得证明的结构,构造一个特殊形式的数,然后分析其素因子。关键观察:形如 的数的乘积仍然是 的形式,因此 形式的合数至少有一个 形式的素因子。
解答
证明(反证法):
假设形如 的素数只有有限个,设为 (其中 )。
令 。
注意 ,且 ,。
的素因子分解中,不可能全部是 形式的素数(因为 形式的数之积仍为 形式,而 )。因此 至少有一个 形式的素因子 。
但 不能是 中的任何一个(因为 ,而 ,故 )。
这与”所有 形式的素数都在列表中”的假设矛盾。
因此形如 的素数有无穷多个。
解题思路提示
素数与 GCD 相关题目的解题方法论:
- 判断素数:用试除法,只需检验不超过 的素数
- 素因子分解:从最小素数开始逐个试除
- 欧几里得算法:反复带余除法,最后一个非零余数即为 GCD
- 求贝祖系数:先正向执行欧几里得算法,再反向代入;或直接使用扩展欧几里得算法
- 证明素数无穷:构造特殊形式的数,分析其素因子必在列表之外
- GCD 与 LCM 关系:牢记
五、视频学习指南
视频资源
六、教材原文
教材原文
“A prime is an integer greater than 1 that is divisible by no positive integers other than 1 and itself. The study of prime numbers goes back to ancient times. Thousands of years ago it was known that there are infinitely many primes; the proof of this fact, found in the works of Euclid, is famous for its elegance and beauty.”
“The fundamental theorem of arithmetic asserts that every positive integer can be written uniquely as the product of primes in nondecreasing order.”
“Primes have become essential in modern cryptographic systems, and we will develop some of their properties important in cryptography. For example, finding large primes is essential in modern cryptography. The length of time required to factor large integers into their prime factors is the basis for the strength of some important modern cryptographic systems.”
“The Euclidean algorithm is based on the principle that the greatest common divisor of two numbers does not change if the larger number is replaced by its difference with the smaller number.”