Euklidischer Algorithmus (GGT) mit mehreren Nummern?

Also ich Schreibe ein Programm in Python, um die GCD von jeder Menge von zahlen.

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)

Die Funktion nimmt eine Liste von zahlen.
Dies sollte 2 ausgeben. Aber ich verstehe nicht, wie die der Algorithmus rekursiv, so kann es mehrere zahlen. Kann sich das jemand erklären?

aktualisiert, funktioniert immer noch nicht:

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

Ok, gelöst es

def GCD(a, b):

    if b == 0:
        return a
    else:
        return GCD(b, a % b)

verwenden und dann zu reduzieren, wie

reduce(GCD, (30, 40, 36))

InformationsquelleAutor der Frage Tetramputechture | 2013-05-18

Schreibe einen Kommentar