现在的位置: 首页 > 综合 > 正文

经典算法(3)- 用二进制方法求两个整数的最大公约数(GCD)

2019年04月10日 ⁄ 综合 ⁄ 共 1729字 ⁄ 字号 评论关闭

二进制GCD算法基本原理是:
 先用移位的方式对两个数除2,直到两个数不同时为偶数。然后将剩下的偶数(如果有的话)做同样的操作,这样做的原因是如果u和v中u为偶数,v为奇数,则有gcd(u,v)=gcd(u/2,v)。到这时,两个数都是奇数,将两个数相减(因为gcd(u,v) = gcd(u-v,v)),得到的是偶数t,对t也移位直到t为奇数。每次将最大的数用t替换。

二进制GCD算法优点是只需用减法和二进制移位运算,不像Euclid's算法需要用除法,这在某些嵌入式系统中可能排上用场。

 

本例实现参考了<<计算机编程的艺术>>第二卷中介绍的算法。

 

抱歉!评论已关闭.