En büyük ortak faktörü bulmaya çalışıyorum.Python Döngü, ve (&) işleci çalışmıyor
Düşük değeri birer birer azaltan kötü (işlem yoğun) bir algoritma yazdım,% değerini kullanarak, hem pay hem de paydayı eşitleyip ayırmadığını, eğer programdan çıkarsa eşit görüp görmediğini kontrol ettim. Bununla birlikte, while döngüsüm ve operatörü kullanmıyor, ve böylelikle sayı bölünürse, doğru cevap olmasa bile durur. Ben kullanıyorum
numaraları 54 ve 42 doğru GCD olan (büyük ortak payda) 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
olduğunu alıyorum cevabım 27 ulaşır ve bölebilirsiniz bana bir kez söyler, 27 olduğu 54/27 eşit olarak durur. Python'da bir süre operatörün nasıl kullanıldığına dair herhangi bir düşünce var mı?
Teşekkürler!
Girdiğiniz için anahtar kelimeyi kullanmayı denedim ve hala 27 tane aldım, aynı sonucu alıyor musunuz? – Blakedallen
@Blakedallen: 'or' kullanmayı deneyin. –
Bunun çok verimsiz olduğunu görüyorsunuz! Euclid'in algoritmasının çok daha iyi olduğuna inanıyorum. – Blakedallen