欧几里得算法
概述
欧几里得算法(Euclidean Algorithm)也称辗转相除法,是计算两个正整数最大公约数 的高效算法。其核心是引理 :通过反复执行带余除法,将问题规模不断缩小,直到余数为 0,最后一个非零余数即为 GCD。算法只需 次除法(Lame 定理:除法次数不超过 ),总位运算复杂度为 。欧几里得算法是已知最古老的算法之一,也是高效算法设计的经典范例。
定义
欧几里得算法的核心引理(Lemma 1)
设 ,其中 为整数,则
证明:只需证明 的公因子集合与 的公因子集合相同。
- 若 且 ,则
- 若 且 ,则
因此 。
欧几里得算法(Algorithm 1: The Euclidean Algorithm)
输入:正整数 (设 )
步骤:反复应用带余除法
其中 ,。由 Lemma 1:
结论:最后一个非零余数 即为 。
Lame 定理
用欧几里得算法计算 ()所需的除法次数不超过 ,即不超过 的十进制位数的 5 倍。
- 最坏情况出现在 和 是相邻的斐波那契数时
- 更精确的界:除法次数 ,其中 为黄金比例
核心性质
| 性质 | 描述 | 说明 |
|---|---|---|
| 核心引理 | Lemma 1,算法正确性的基础 | |
| 除法次数 | 次 | Lame 定理 |
| 位运算复杂度 | 每次除法涉及 位数 | |
| 最坏情况 | 和 为相邻斐波那契数 | 恰好需要 次除法 |
| 无需素因子分解 | 直接通过带余除法计算 | 比素因子分解法高效得多 |
| 终止性保证 | 余数严格递减且非负 | 必在有限步内终止 |
| 历史地位 | 已知最古老的算法之一 | 公元前 300 年欧几里得《几何原本》 |
关系网络
graph TB A["欧几里得算法"] --> B["最大公约数"] A --> C["贝祖定理"] A --> D["算法"] A --> E["大O记号"] A --> F["函数"] A --> G["辗转相除法"] A --> H["Lame 定理"] A --> I["扩展欧几里得算法"] G --> G1["gcd(a,b) = gcd(b, a mod b)"] G --> G2["反复带余除法"] G --> G3["最后一个非零余数 = GCD"] H --> H1["除法次数 ≤ 5·log₁₀(b)"] H --> H2["最坏情况: 相邻斐波那契数"] I --> I1["同时计算贝祖系数 s, t"] I --> I2["r_j = s_j·a + t_j·b"] B --> B1["高效计算 GCD"] C --> C1["反向代入求 sa + tb = gcd"] style A fill:#5cb85c,color:#fff style B fill:#4a90d9,color:#fff style C fill:#d9534f,color:#fff style G fill:#e8a838,color:#fff style I fill:#9b59b6,color:#fff
- 最大公约数 是欧几里得算法的计算目标:高效求
- 贝祖定理 可通过欧几里得算法的反向代入(扩展欧几里得算法)来证明和计算
- 算法 的框架为欧几里得算法提供了精确描述:有限性、确定性、有效性
- 大O记号 用于量化欧几里得算法的效率: 次除法
- 函数 的视角:欧几里得算法实现了一个从 到 的函数
章节扩展
第4章:数论与密码学
欧几里得算法是第 4 章 4.3 节的核心算法:
- 4.3 素数与最大公约数:欧几里得算法(Algorithm 1)、核心引理(Lemma 1)、Lame 定理的复杂度分析
- 4.3 扩展欧几里得算法:在计算 GCD 的同时求出贝祖系数
- 4.4 解同余方程:扩展欧几里得算法用于求模逆元,从而求解线性同余方程
- 4.5 密码学应用:RSA 中用扩展欧几里得算法计算私钥
第5章:归纳与递归
- 5.3 递归定义:欧几里得算法具有自然的递归表述:(基础情形:)。Lamé定理的证明也使用了斐波那契数列的递归定义。
补充
欧几里得算法与斐波那契数列
欧几里得算法的效率分析是算法复杂度理论的经典案例。1845 年,法国数学家 Gabriel Lame 证明了除法次数不超过 ,其中 为黄金比例。最坏情况出现在 和 是相邻的斐波那契数时: 恰好需要 次除法。欧几里得算法是已知最古老的算法之一,记载于公元前 300 年欧几里得的《几何原本》(Book VII, Propositions 1-2)。该算法的优美之处在于:它将”求最大公约数”这一看似需要枚举所有公因子的问题,转化为简单的”反复取余”操作,体现了算法设计中”分而治之”和”问题归约”的核心思想。
学术来源:Rosen, K. H. (2019). Discrete Mathematics and Its Applications (8th ed.). McGraw-Hill, Section 4.3.
参考链接:Knuth, D. E. (1997). The Art of Computer Programming (Vol. 2, 3rd ed.). Addison-Wesley, Section 4.5.2.