Помогите понять код PYTHON

возник вопрос, этот код вычисляет НОД двух чисел(Наибольший общий делитель), не понимаю почему он должен работать корректно, разве цикл не будет работать до тех пока a и b станут нулями*? Разве не надо было написал "or" а не "and"

a = int(input())
b = int(input())
while a != 0 and b != 0:
    if a > b:
        a = a % b
    else:
        b = b % a
gcd = a + b
print(gcd)

Ответы (1 шт):

Автор решения: CrazyElf

В while указывается условие продолжения работы цикла, а не окончания. Вот если превращать условие в обратное, чтобы прервать по нему цикл, то как известно по арифметике логических операторов, И превратится в ИЛИ:

while True:
    if a == 0 or b == 0: 
        break
    ...

Вот вам как-раз проверка на равенство нулю и использование ИЛИ, всё как вы хотели.

→ Ссылка