Функция для вычисления НОК или НОД (среда программирования КуМир)

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

Пользователь вводит пары чисел, требуется вычислять наибольший общий делитель (НОД) или наименьшее общее кратное (НОК) в зависимости от его выбора.

НОК можно вычислить, если получить НОД по формуле НОК = a*b / НОД(a,b). Вынесем вычисление и того и другого в одну функцию-алгоритм. Что именно вычислять, будет определяться третьим передаваемым параметром.

В основной ветке программы будут запрашиваться два числа и "предмет" вычисления, в зависимости от которого функция будет вызываться либо с одним значением параметров, либо с другим.

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

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

Выполнение программы:

60 89
НОД (1) или НОК (2): 2
НОК = 5340
60 80
НОД (1) или НОК (2): 1
НОД = 20
36 94
НОД (1) или НОК (2): 1
НОД = 2
348 453
НОД (1) или НОК (2): 2
НОК = 52548
0 0
НОД (1) или НОК (2): 1
НОД = 0