欧几里得算法+Python代码

算法原理

对于a = b*q + c
存在(a,b) = (b,c)

证明:
令d = (a,b)
有d|a, d|b
由c = a - b*q
知d|c,即d是b,c的公因数

令e = (b,c)
显然有d<=e
而e|b, e|c
由a = b*q + c
知e|a,即e是a,b的公因数
可得d>=e

d=e,即(a,b) = (b,c)

Python代码

# encoding:utf-8


def myGCD(a, b):
    """
    a,b顺序无所谓
    """
    while b != 0:
        # print(a, b)
        a, b = b, a % b
    return a


# print(myGCD(12075, 4655))
print(myGCD(172, 46))

猜你喜欢

转载自www.cnblogs.com/kexve/p/11878136.html