算法原理
对于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))