基础算法数论与模运算详解
1. 欧几里得算法求最大公约数
欧几里得算法(GCD)用于计算两个整数的最大公约数。其输入为两个整数 (a) 和 (b),满足 (a \geq b > 0),输出为 (a) 和 (b) 的最大公约数。算法流程如下:
ALGORITHM B.7
The Euclidean algorithm GCD
Input: Integers a, b with a ≥b > 0
Output: The greatest common divisor of a and b
if b divides a
return b
else return GCD(b, [a mod b])
可以证明,若 (a_0 \geq b_0 > 0),设 (a_i),(b_i)((i = 1, \cdots, \ell))为第 (i) 次递归调用 GCD 的参数,则对于 (0 \leq i \leq \ell - 2),有 (b_{i + 2} \leq b_i / 2)。
推论表明,在执行算法 GCD(a, b) 时,对 GCD 的递归调用最多为 (2 |b| - 2) 次。
此外,通过对欧几里得算法进行简单修改,得到扩展欧几里得算法(eGCD),不仅可以计算最大公约数,还能找到整数 (X) 和 (Y),使得 (Xa + Yb = \gcd(a, b))。其算法流程如下:
ALGORITHM B.10
The extended Euclidean al
超级会员免费看
订阅专栏 解锁全文

76

被折叠的 条评论
为什么被折叠?



