def euclidean_gcd(a, b):
    """
    使用欧几里得算法, 计算两个数的最大公约数
    :param a:
    :param b:
    :return: gcd(a,b)
    """
    if a == 0 and b == 0:
        return 0
    elif a == 0 and b != 0:
        return b
    elif a != 0 and b == 0:
        return a

    while b != 0:
        # 不使用 % , 因为 % 在不同的编程语言中的结果可能是不同的(虽然都是同余的)
        # a, b = b, a % b
        q = int(a / b)
        r = a - q * b
        a, b = b, r
    return a