📜  给定数字的GCD(1)

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

给定数字的GCD

简介

GCD(最大公约数)是指两个或多个整数共有约数中最大的一个。在这篇文章中,我们将探讨如何计算给定数字的GCD。

算法
欧几里得算法(辗转相除法)

欧几里得算法,也称辗转相除法,是求最大公约数的一种方法。具体步骤如下:

  1. 令a为较大的数,b为较小的数;
  2. 用a除以b,得到余数c;
  3. 若c等于0,则b即为两数的最大公约数;
  4. 若c不等于0,则将b赋值给a,将c赋值给b,再执行第2步。
def gcd(a, b):
    if b == 0:
        return a
    else:
        return gcd(b, a % b)
更相减损术

更相减损术是另一种求最大公约数的方法。具体步骤如下:

  1. 令a为较大的数,b为较小的数;
  2. 用a减去b,得到差c;
  3. 若c等于0,则b即为两数的最大公约数;
  4. 若c不等于0,则用较大数减去较小数,得到的新较大数和原来的较小数再重复执行第2步。
def gcd(a, b):
    while a != b:
        if a > b:
            a -= b
        else:
            b -= a
    return a
总结

欧几里得算法是计算GCD最常用的方法,因为它的时间复杂度为O(log n),相较于更相减损术的O(n)更高效。然而,在处理大整数时,递归调用算法会导致栈溢出,因此迭代方法更可取。