欧几里得算法+Python代码

南楼画角 提交于 2019-12-04 18:41:46

算法原理

对于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))
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!