Python While Loop, el operador (&) no está funcionando

Estoy tratando de encontrar el mayor factor común.

Escribí un mal algoritmo (de operación intensiva) que disminuye el valor inferior en uno, verifica el uso de% para ver si divide uniformemente el numerador y el denominador, si lo hace, entonces sale del programa. Sin embargo, mi bucle while no usa el operador y, por lo tanto, una vez que el numerador es divisible, se detiene, aunque no sea la respuesta correcta.

Los números que estoy usando son 54 y 42, el GCD correcto (el mayor denominador común) es 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

La respuesta que estoy obteniendo es 27, que me dice que una vez que llega a 27 y puede dividir 54/27 de manera uniforme, se detiene. ¿Alguna idea sobre cómo usar un operador and en un bucle while en python?

¡Gracias!

Respuestas a la pregunta(2)

Su respuesta a la pregunta