求两个整数的最大公约数
本文发布于 16 年前,部分内容可能已经失去参考价值。
最大公约数问题来自正整数范围,但现在的定义我也不清楚,姑且认为任意两个整数都有一个最大公约数。我的定义是:设a,b为任意两整数,d就是a与b所有公因数中最大的那个。(如果我的定义有问题,请打我,但是,要说明的是,它不影响这里的算法)。
为了能快算理解算法,下面十分直观的描述一下算法,完整而严谨的描述请参考其他资料对辗转相除的描述。
问题:求a,b的最大公约数g
解决:不妨设a = alpha * g, b = beta * g且a > b
让大的减小的, 得到两个数 (alpha - beta) * g, beta * g
再大的减小的, g的系数越来越小, 这样减下去,直到g的系数成为一了,就把g找到了.
当然在实际计算中a, b不能是写成alpah * g, beta * g的形式的(都写成这样了,还用计算么?), 所以就反复你减我,我减你,直到得到两个相等的整数为止.这个整数就是a和b的最大公约数了.
为了能快算理解算法,下面十分直观的描述一下算法,完整而严谨的描述请参考其他资料对辗转相除的描述。
问题:求a,b的最大公约数g
解决:不妨设a = alpha * g, b = beta * g且a > b
让大的减小的, 得到两个数 (alpha - beta) * g, beta * g
再大的减小的, g的系数越来越小, 这样减下去,直到g的系数成为一了,就把g找到了.
当然在实际计算中a, b不能是写成alpah * g, beta * g的形式的(都写成这样了,还用计算么?), 所以就反复你减我,我减你,直到得到两个相等的整数为止.这个整数就是a和b的最大公约数了.
匿
转自
网络(如侵权请联系删除)
17 年前
可能相关的内容