Python While Loop, der Operator und (&) funktioniert nicht

Ich versuche, den größten gemeinsamen Faktor zu finden.

Ich habe einen schlechten (betriebsintensiven) Algorithmus geschrieben, der den niedrigeren Wert um eins dekrementiert, mit% überprüft, ob er sowohl den Zähler als auch den Nenner gleichmäßig aufteilt. Wenn dies der Fall ist, wird das Programm beendet. Meine while-Schleife verwendet jedoch nicht den Operator und, und sobald der Zähler teilbar ist, stoppt er, obwohl er nicht die richtige Antwort ist.

Die Zahlen, die ich benutze, sind 54 und 42, der richtige GCD (größter gemeinsamer Nenner) ist 6.

#heres a simple algorithm to find the greatest common denominator: 

iterations = 0; #used to calculate number of times while loop is executed

u = 54; v= 42; d = v-1; #u is the numerator, v is the denominator, d is the number decremented by one 

while ((v % d !=0) & (u % d != 0)): #while both numerator AND denominator cannot be evenly divided by the decremented number
 d -= 1 #decrement the number by one
 print d #print the number decremented
 iterations +=1 #add 1 to the count of iterations in while loop

print "the gcd is " +str(d) #should be 6 when the number can evenly divide both
print "the number of iterations was " +str(iterations) #display times it took algorithm to complete

Die Antwort, die ich bekomme, ist 27, was mir sagt, dass es aufhört, wenn es 27 erreicht und sich gleichmäßig auf 54/27 teilen kann. Überlegungen zur Verwendung eines und -Operators in einer while-Schleife in Python?

Vielen Dank!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage