欧几里德算法及python脚本实现

欧几里德算法又称辗转相除法, 用于计算两个整数a, b的最大公约数。其计算原理依赖于下面的定理:

定理: gcd(a, b) = gcd(b, a mod b)

定理证明:
  a可以表示成a = kb + r, 则r = a mod b
 (1) 先假设d是a, b的一个公约数, 则有  d|a, d|b, 而r = a - kb, 等式两边同时除以d,则r/d=a/d - kb/d。因为d是a,b的一个公约数,则r也可以被d整除,因此d|r。所以,d是(b, a mod b)的公约数。

 (2)反过来,如果d是(b,a mod b)的公约数,则d|b, d|r, 由于a = kb + r,因此d也是(a, b)的公约数。
 (3) 综上所述,(a, b) 和(a, a mod b)的公约数是一样的,其最大公约数也必然相等,得证。

欧几里德的Python语言描述为:

欧几里德算法及python脚本实现_第1张图片

你可能感兴趣的:(数据结构与算法)