欧几里得算法(Euclidean algorithm)
最大公约数
两个正整数r0和r1的最大公约数表示为:
他指的是被r0和r1同时整除的最大正整数,例如:
欧几里得算法
定义
在数学中,辗转相除法,又称欧几里得算法(英语:Euclidean algorithm),是求最大公约数的算法。
证明
补充说明
根据欧几里得定义可得:
只要r0-mr1>0,上述等式依然成立,为了减少计算步骤,每次都可以取使得r0-mr1>0成立的最大的m的值来计算,此时r0-mr1=r0 mod r1,所以欧几里得定理也可以表示为:
案例
实现
1 | def gcd(a, b): |
扩展欧几里得算法
定义
已知整数a、b,扩展欧几里得算法可以在求得a、b的最大公约数的同时,找到整数x、y(其中一个可能是负数),使它们满足貝祖等式:ax+by=gcd(a,b)
原理
递归原理
非递归原理
实现
1 | # 递归的实现方式,利用Xn和Yn的关系正向推导 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Zero!
