Skip to content

整数欧几里得算法

Euclidean algorithm for integers

反复使用带余除法计算最大公约数的有限算法。

条目类型
算法

形式陈述

对整数 a 与非零 b,除法算法给出唯一q,r,使

a=bq+r,0r<|b|.

gcd(a,b)=gcd(b,r).

反复用 (a,b)(b,r),余数形成严格下降的非负整数列,必在有限步后到达零;最后一个非零余数即 gcd(a,b)。把每个余数向前回代,可求整数 x,y 使 ax+by=gcd(a,b),称扩展欧几里得算法。其位复杂度依实现而异,基本除法步数为 O(logmin(|a|,|b|))

直觉

用较小余数替换较大数不会改变公共因子,却使规模严格下降。终止性来自自然数不能无限下降,回代则保留每个余数对原输入的线性表达。Euclid 算法不断用余数替换较大的数,因为共同约数在这一步完全不变:d 同时整除 a,b 当且仅当它同时整除 b,aqb。余数严格变小保证过程终止,最后一个非零余数便捕获全部共同约数中的最大者。它把一个全局的约数问题压缩成局部除法序列。

整数欧几里得算法的余数下降
例子与边界

计算 gcd(252,105)

252=2105+42,105=242+21,42=221.

故最大公因数为 21。倒推得到 21=51052252,同时给出 Bézout 系数;扩展算法也因此能求an 的逆,而逆存在当且仅当 gcd(a,n)=1。若输入含负数,算法通常先取绝对值并在最后调整符号,取非负gcd;gcd(0,0) 的约定需单独说明。还要注意,除法步数的对数界不表示所有大整数实现都有线性时间,实际复杂度也包含算术操作成本;算法成立的核心是不变量与良基下降,而不是“分治”这个名称。

推论与应用

欧几里得算法用于约分、模逆、CRT 拼接、RSA 密钥运算和有理重构。算法计算 最大公因数,扩展版本还构造 Bézout 等式,从而求模逆、解线性同余并支撑 整数中国剩余定理。其“带余除法 + 范数下降”模式推广到 Euclid 整环 和多项式环。

参考资料
  • Kenneth Ireland and Michael Rosen, A Classical Introduction to Modern Number Theory, 2nd ed., Springer, 1990,Ch. 1, Euclidean algorithm and continued remainders。
  • Ivan Niven, Herbert S. Zuckerman, and Hugh L. Montgomery, An Introduction to the Theory of Numbers, 5th ed., Wiley, 1991,Ch. 1, Euclidean and extended Euclidean algorithms。
关系图谱3 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系

实现的抽象