Ваша реализация
Что касается вашей реализации, которую вы хотите зациклить, пока обе операции по модулю не будут равны нулю, это означает, что цикл пока одна or
другая не равна нулю.Также обратите внимание, что gcf не может быть больше минимума обоих чисел.
a = 8
b = 6
gcf = min(a, b) # This is the max value your gcf can take
while a % gcf or b % gcf: # Use 'or' in your condition
gcf -= 1
print(gcf) # 2
Встроенный math.gcd
Хотя для достаточно больших чисел вы хотитеиспользуйте более эффективную реализацию, которая использует алгоритм Евклида , это то, что делает math.gcd
.Обратите внимание, что gcd
обозначает наибольший общий делитель , который является математическим названием искомого числа.
import math
math.gcd(8, 6) # 2