相关疑难解决方法(0)

具有多个数的欧几里得算法(GCD)?

所以我正在用Python编写一个程序来获取任意数量的GCD.

def GCD(numbers):

    if numbers[-1] == 0:
        return numbers[0]


    # i'm stuck here, this is wrong
    for i in range(len(numbers)-1):
        print GCD([numbers[i+1], numbers[i] % numbers[i+1]])


print GCD(30, 40, 36)
Run Code Online (Sandbox Code Playgroud)

该函数采用数字列表.这应该打印2.但是,我不明白如何递归使用该算法,因此它可以处理多个数字.谁能解释一下?

更新,仍然无法正常工作:

def GCD(numbers):

    if numbers[-1] == 0:
        return numbers[0]

    gcd = 0

    for i in range(len(numbers)):
        gcd = GCD([numbers[i+1], numbers[i] % numbers[i+1]])
        gcdtemp = GCD([gcd, numbers[i+2]])
        gcd = gcdtemp

    return gcd
Run Code Online (Sandbox Code Playgroud)

好的,解决了

def GCD(a, b):

    if b == 0:
        return a
    else:
        return GCD(b, a % b)
Run Code Online (Sandbox Code Playgroud)

然后使用reduce,就像

reduce(GCD, (30, …
Run Code Online (Sandbox Code Playgroud)

python math greatest-common-divisor

24
推荐指数
4
解决办法
4万
查看次数

Python GCD列表

我想为数字列表计算gcd。但是我不知道我的代码有什么问题。

A = [12, 24, 27, 30, 36]


def Greatest_Common_Divisor(A):
    for c in A:
        while int(c) > 0:
            if int(c) > 12:
                c = int(c) % 12
            else:
                return 12 % int(c)
    print Greatest_Common_Divisor(A)
Run Code Online (Sandbox Code Playgroud)

python greatest-common-divisor

4
推荐指数
6
解决办法
1万
查看次数

标签 统计

greatest-common-divisor ×2

python ×2

math ×1