📜  基本欧几里得算法的Python程序(1)

📅  最后修改于: 2023-12-03 15:08:08.158000             🧑  作者: Mango

基本欧几里得算法(辗转相除法)的 Python 程序

欧几里得算法,也称为辗转相除法,是求两个数的最大公约数(最大公因数)的一种方法。该算法可以递归和迭代两种实现方式,以下为迭代实现方式的 Python 代码。

代码
def gcd(a, b):
    # 如果 b 为 0,那么最大公约数为 a
    while b != 0:
        # 计算 a 和 b 的余数
        r = a % b
        # 更新 a 和 b 的值
        a = b
        b = r
    return a

上述代码中,gcd 函数接收两个参数 ab,返回它们的最大公约数。在函数体内,使用 while 循环逐步计算 ab 的余数 r 并更新 ab 的值,当 b 为 0 时返回 a

示例
# 示例1
print(gcd(6, 9)) # output: 3

# 示例2
print(gcd(24, 60)) # output: 12
分析

欧几里得算法的时间复杂度为 $O(\log(\max(a,b)))$,其中 $\max(a,b)$ 为输入的数中的较大者。因为算法每次循环都会将较大的数减小,所以算法的执行次数为 $O(\log(\max(a,b)))$。

总结

欧几里得算法是求两个数的最大公约数的一种快速有效的算法。在实际编程中,我们应该尽量使用现成的算法库,以免重复发明轮子。但是深入了解算法的原理和实现方式,可以帮助我们更好地理解和使用现成的算法库。