Я полагаю, вы имели в виду or
, а не and
в состоянии while
.Поскольку в первой итерации k
равно либо a
, либо b
, and
не имеет особого смысла.
def gcdIter(a, b):
k = min(a, b)
while b % k != 0 or a % k != 0:
k = k - 1
return k
print(gcdIter(9, 12))
# 3