欧几里得算法+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)
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))