Python Пока цикл, оператор and (&) не работает

Я пытаюсь найти наибольший общий множитель.

Я написал плохой (интенсивный по операциям) алгоритм, который уменьшает меньшее значение на единицу, проверяет с помощью %, чтобы увидеть, равномерно ли он делит и числитель, и знаменатель, и если это так, то он выходит из программы. Однако мой цикл while не использует оператор и, и поэтому, как только числитель делится, он останавливается, даже если это не правильный ответ.

Числа, которые я использую, — 54 и 42, правильный НОД (наибольший общий знаменатель) — 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

Ответ, который я получаю, — 27, что говорит мне, что когда оно достигает 27 и может разделить 54/27 поровну, он останавливается. Любые мысли о том, как использовать оператор and в цикле while в python?

Спасибо!

7
задан Nick Craig-Wood 26 May 2012 в 06:45
поделиться