专栏文章索引:Python
有问题可私聊:QQ:3375119339
目录
辗转相除法,又称欧几里得算法,是一种用于计算两个正整数的最大公约数的算法。
一、基本原理
- 假设两个整数为 a 和 b(a > b),用较大数除以较小数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是 0 为止。
注意:除以和除的区别 - 当余数为 0 时,当前算式中的除数就是 a和b 的最大公约数。
二、算法步骤
- 首先判断两个数是否为 0,如果其中一个数为 0,则最大公约数为另一个非零数。
- 然后用较大数 a 对较小数 b 取余,得到余数 r。
- 如果余数 r 为 0,则此时较小数 b 就是最大公约数。
- 如果余数 r 不为 0,则将较大数更新为较小数 b,将较小数更新为余数 r,重复上述步骤,直到余数为 0。
三、示例代码
def gcd(a, b):
if a == 0:
return b
if b == 0:
return a
while b!= 0:
a, b = b, a % b
return a
四、时间复杂度
时间复杂度取决于两个数的大小关系以及除法运算的次数。一般来说,时间复杂度为 O(log(min(a, b),其中 a 和 b 是输入的两个整数。
辗转相除法是一种高效且常用的计算最大公约数的方法,在数学和计算机科学中有广泛的应用。