内容全部参考自《算法导论3rd》。
1. 理论
a与b的最大公约数此处记做gcd(a,b)。计算最大公约数的欧几里得算法基于如下定理:
(GCD递归定理) 对任意非负整数a和任意正整数b,
gcd(a, b) = gcd(b, a mod b)
2. 伪代码
def EUCLID(a, b)
if b == 0:
return a
else
return EUCLID(b, a % b)
3. 复杂度
EUCLID执行中递归调用的次数为O(lgb)。如果EUCLID作用于两个m位数,则它将执行O(m)此算数运算和O(m^2)次位操作(假设m位数的乘法和除法运算要执行O(m^2)次位操作)。