2016-10-16 6 views
0
def get_divs(z): 
     return [i for i in range(1, z) if z % i == 0] 

def gcd(x, y): 
     x_div=get_divs(x) 
     y_div=get_divs(y) 
     cd=set(x_div).intersection(y_div) 
     gcd=cd[-1] 
     print("The GCD of",x,"and",y,"is",gcd) 
     return 1 

Ich versuche, dieses Programm zu bekommen die größten gemeinsamen Teiler (GCD) von zwei vom Benutzer eingegebenen, positiven ganzen Zahlen (x, y) zu berechnen. Die Funktion set gibt keine Liste zurück, die indiziert werden kann. Irgendwelche Vorschläge, wie ich den GCD finden kann?Größte gemeinsamer Teiler (GCD)

+0

Sie könnten versuchen, das Set mit 'list (cd)' in eine Liste zu konvertieren. Alternativ, wenn Sie das größte Element von 'cd' wollen, benutzen Sie' max (cd) '. – wflynny

Antwort

-1

Hier ist, wie der Algo aussehen sollte.

findGCD(int firstNum, int secondNum){ 
int smaller; int bigger;int remainder; 
if(firstNum < secondNum) { 
    smaller = firstNum; 
    bigger = secondNum; 
} 
else { 
    smaller = secondNum; 
    bigger = firstNum; 
} 

while(true) { 
    remainder = bigger % smaller; 
    if(remainder == 0) { 
     break; 
    } 
    else { 
     bigger = smaller; 
     smaller = remainder; 
    } 
} 
return smaller; 
}