Python While Loop, o operador e (&) não está funcionando

Eu estou tentando encontrar o maior fator comum.

Eu escrevi um algoritmo ruim (operação intensiva) que decrementa o valor mais baixo em um, verifica usando% para ver se ele divide o numerador e o denominador, se isso acontecer, então ele sai do programa. No entanto, meu loop while não está usando o operador e, assim, quando o numerador é divisível, ele pára, mesmo que não seja a resposta correta.

Os números que estou usando são 54 e 42, o GCD correto (maior denominador comum) é 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

A resposta que estou recebendo é 27, o que me diz que uma vez que atinge 27 e pode dividir 54/27 uniformemente, ele para. Alguma idéia sobre como usar um operador e em um loop while em python?

Obrigado!

questionAnswers(2)

yourAnswerToTheQuestion