C/C++

Вопрос про НОД в программировании

Есть например вот такая часть кода (функция):
int NOD(int a, int b)
{
while(a > 0 && b > 0)

if(a > b)
a %= b;

else
b %= a;

return a + b;
}

Что находится в каждой строке и как работает это для нахождения НОД?
Вот тебе сравнительная таблица:
a=0 b=0 rez=0
a=0 b=1 rez=1
a=0 b=2 rez=2
a=0 b=3 rez=3
a=0 b=4 rez=4
a=0 b=5 rez=5
a=0 b=6 rez=6
a=0 b=7 rez=7
a=0 b=8 rez=8
a=0 b=9 rez=9
a=1 b=0 rez=1
a=1 b=1 rez=1
a=1 b=2 rez=1
a=1 b=3 rez=1
a=1 b=4 rez=1
a=1 b=5 rez=1
a=1 b=6 rez=1
a=1 b=7 rez=1
a=1 b=8 rez=1
a=1 b=9 rez=1
a=2 b=0 rez=2
a=2 b=1 rez=1
a=2 b=2 rez=2
a=2 b=3 rez=1
a=2 b=4 rez=2
a=2 b=5 rez=1
a=2 b=6 rez=2
a=2 b=7 rez=1
a=2 b=8 rez=2
a=2 b=9 rez=1
a=3 b=0 rez=3
a=3 b=1 rez=1
a=3 b=2 rez=1
a=3 b=3 rez=3
a=3 b=4 rez=1
a=3 b=5 rez=1
a=3 b=6 rez=3
a=3 b=7 rez=1
a=3 b=8 rez=1
a=3 b=9 rez=3
a=4 b=0 rez=4
a=4 b=1 rez=1
a=4 b=2 rez=2
a=4 b=3 rez=1
a=4 b=4 rez=4
a=4 b=5 rez=1
a=4 b=6 rez=2
a=4 b=7 rez=1
a=4 b=8 rez=4
a=4 b=9 rez=1
a=5 b=0 rez=5
a=5 b=1 rez=1
a=5 b=2 rez=1
a=5 b=3 rez=1
a=5 b=4 rez=1
a=5 b=5 rez=5
a=5 b=6 rez=1
a=5 b=7 rez=1
a=5 b=8 rez=1
a=5 b=9 rez=1
a=6 b=0 rez=6
a=6 b=1 rez=1
a=6 b=2 rez=2
a=6 b=3 rez=3
a=6 b=4 rez=2
a=6 b=5 rez=1
a=6 b=6 rez=6
a=6 b=7 rez=1
a=6 b=8 rez=2
a=6 b=9 rez=3
a=7 b=0 rez=7
a=7 b=1 rez=1
a=7 b=2 rez=1
a=7 b=3 rez=1
a=7 b=4 rez=1
a=7 b=5 rez=1
a=7 b=6 rez=1
a=7 b=7 rez=7
a=7 b=8 rez=1
a=7 b=9 rez=1
a=8 b=0 rez=8
a=8 b=1 rez=1
a=8 b=2 rez=2
a=8 b=3 rez=1
a=8 b=4 rez=4
a=8 b=5 rez=1
a=8 b=6 rez=2
a=8 b=7 rez=1
a=8 b=8 rez=8
a=8 b=9 rez=1
a=9 b=0 rez=9
a=9 b=1 rez=1
a=9 b=2 rez=1
a=9 b=3 rez=3
a=9 b=4 rez=1
a=9 b=5 rez=1
a=9 b=6 rez=3
a=9 b=7 rez=1
a=9 b=8 rez=1
a=9 b=9 rez=9
Санёк Демьяненко
Санёк Демьяненко
61 138
Лучший ответ
Сергей Осипов А например если 12 и 18 как это работает
Данная функция реализует банальнейший https://ru.wikipedia.org/wiki/Алгоритм_Евклида - в самом простом его варианте.