最大公约数

计算两个整数的最大公约数可以使用欧几里得算法(Euclidean algorithm),也称为辗转相除法。

欧几里得算法的基本原理是,两个整数a和b(假设a >= b)的最大公约数等于b和a mod b的最大公约数,其中mod是取余运算符。

def gcd(a, b):
    """
    时间复杂度:O(n)
    空间复杂度:O(1)

    :param a:
    :param b:
    :return:
    """
    if b == 0:
        return a
    return gcd(b, a % b)


def gcd2(a, b):
    """
    时间复杂度:O(n)
    空间复杂度:O(1)

    :param a:
    :param b:
    :return:
    """
    while b > 0:
        r = a % b
        a = b
        b = r
    return a


print(gcd(12, 16))
print(gcd2(12, 16))

results matching ""

    No results matching ""