最大公约数 上

来源:互联网 发布:qq游戏网络连接超时 编辑:程序博客网 时间:2024/06/02 07:38

如何求两个数的最大公约数呢,这是我的算法,其中list_primes是事先生成好的素数列表:[2,3,...,p<b],a>b:
def my_gcd(a,b):
    r = 1
    for prime in list_primes:
        if prime > b:
            return r
        while a % prime == 0 and b % prime == 0:
            r *= prime
            a /= prime
            b /= prime
我个人觉得这是非常natural的方法,它完全是按照最大公约数的定义来求的。

然而,18世纪伟大的数学家欧拉给出他的答案:
def euler_gcd(a,b):
    if b == 0:
        return a
    else:
        r = euler_gcd(b,a%b)
        return r

原创粉丝点击