Наибольший общий делитель - НОД (среда программирования КуМир)

Тема: 
Функции

Для того, чтобы найти наибольший общий делитель (НОД) для двух чисел, можно по-очереди делить большее число на меньшее и остаток от деления далее использовать вместо большего числа. Такие операции следует делать, пока одно число из пары не окажется нулем. Когда это произойдет, второе число и будет НОД. Например, найдем НОД для 80 и 48. Найдя остаток от деления 80 на 48, получим новую пару 48 и 32. Далее получаем 32 и 16, а при их делении остаток 0, т.е. получается пара 16 и 0. Значит НОД(80,48) = 16.

Для нахождения НОД в программе ниже используется алгоритм-функция, которая принимает два числа, а возвращает их НОД. В теле функции в конце первое и второе числа складываются лишь потому, что неизвестно, какое именно число является НОД. Но поскольку другое в любом случае ноль, то от сложения НОД не изменяется.

алг 
нач
  цел а, б
  нц
    вывод "Введите два целых числа: "
    ввод а, б
    вывод "НОД = ", НОД(а,б), нс
  кц_при а = 0 и б = 0
кон
 
алг цел НОД (цел а, цел б)
нач
  цел в, г
  в := а
  г := б
  нц пока в <> 0 и г <> 0
    если в > г то в := mod(в,г)
     иначе г := mod(г,в)
    все
  кц
  знач := в + г
кон

Пример работы программы:

Введите два целых числа: 56 38
НОД = 2
Введите два целых числа: 12 244
НОД = 4
Введите два целых числа: 189 763
НОД = 7
Введите два целых числа: 201 6
НОД = 3
Введите два целых числа: 0 9
НОД = 9
Введите два целых числа: 0 0
НОД = 0