2017-05-27 3 views

Antwort

1

In Ihrem ersten Iteration a%2 ist gleich Null (12% 2) und auch b%2 (24% 2).

Jetzt haben Sie count1 verdoppelt. Und dann rufst du lcm mit den Parametern (0, 0) an (weil wie bereits festgelegt, 12 % 2 == 0 and 24 % 2 == 0).

Als nächstes machen wir 0 % 2, was 0 entspricht. Und dann geht der Zyklus für immer weiter.

-Code für eine bessere Lösung:

def gcd(x, y): 
    # This is the Euclidian algorithm for getting the highest 
    # common factor (greatest common denominator) of two numbers 
    while y != 0: 
     x, y = y, x % y 
    return x 

def lcm(x, y): 
    lcm = (x*y)//gcd(x,y) 
    return lcm 


print(lcm(12, 24)) 

Source

+0

wow! Gut zu wissen, dass ich LCM auch ohne GCF finden kann. Danke für die Quelle! –

+0

Ja, ich passierte LCM (0,0) und daher war es für immer looping.Thanks für das hinweisend! –

1

Es ist nicht wirklich klar wie Sie über die Implementierung von lcm gehen, aber mein Verständnis ist

# lowest common multiple 
# where gcd = greatest common divisor 
lcm(m,n) = m * n/gcd(m,n) 

damit können wir lcm implementieren ganz leicht

def gcd (m,n): 
    if n == 0: 
    return m 
    else: 
    return gcd(n, m % n) 

def lcm (m,n): 
    return m * n/gcd(m,n) 

print(lcm(12,24)) # 24 
+0

Hey vielen Dank GCD sieht einen guten Weg, LCM, um herauszufinden! –

Verwandte Themen