2017-01-20 5 views
0

Der unten angegebene Code funktioniert nur für einige der Eingänge wie gcdIter (2, 12) korrekt, was mir korrekte Ausgabe ie 2 gibt, aber wenn ich Eingabe als gcdIter (220,120) gibt es mir stattdessen 110 von 20. Ich brauche Hilfe mit der Logik.GCD ohne Verwendung der Rekursion

def gcdIter(a, b): 
    ''' 
    a, b: positive integers 

    returns: a positive integer, the greatest common divisor of a & b. 
    ''' 
    if a<b: 
     while a>0: 
      if b%a==0: 
       print('the gcd is : '+''+str(a)) 
       break 
      else: 
       a -= 1 
    else: 
     while b>0: 
      if a%b==0: 
       print('the gcd is :'+''+str(b)) 
       break 
      else: 
       b -= 1 
+0

Leider zu überprüfen, aber Ihr Code macht keinen Sinn für mich. Was ist der Sinn von "a - = 1"? –

+0

Willkommen bei Stack Overflow! Es sieht so aus, als müssten Sie lernen, einen Debugger zu verwenden. Bitte helfen Sie sich selbst [https://ericlippert.com/2014/03/05/how-to-debug-small-programs/]. Wenn Sie danach noch Probleme haben, können Sie gerne weitere Einzelheiten erfahren. –

+0

Ich dekrementiere nur den Wert von a und überprüfe es erneut, um die richtige Antwort zu erhalten. –

Antwort

1

es ist einfach wie that.No Notwendigkeit a<b oder a>b

def gcdIter(a, b): 
    while b: 
     a, b = b, a%b 
    print('the gcd is :'+str(a)) 
+0

Entschuldigung !! aber ich habe diesen Teil nicht bekommen "a, b = b, a% b" –

+0

a, b = b, a% b ist nur kurze Form von a = b & b = a% b :) – ash12

+0

ja ich habe es jetzt vielen Dank .. !!! –

Verwandte Themen