数学

最大公约数

**最大公约数(GCD)**可以用欧几里得算法快速求出。核心等式是:

gcd(a, b) = gcd(b, a mod b)

也就是说,每一轮把 (a, b) 变成 (b, a % b)。当 b 变成 0 时,当前的 a 就是最大公约数。

为什么能变小

a % b 一定小于 b,所以第二个数会不断下降。相比枚举所有可能因子,欧几里得算法通常只需要很少几轮。

复杂度

  • 时间:O(log min(a, b))
  • 空间:O(1)

在动画里看什么

  • a / b 是当前这轮的两个数
  • ra mod b 的结果
  • 每轮计算 r 后,把 (a, b) 更新成 (b, r)
  • b = 0,页面显示最终的 gcd