Из текста задачи можно сделать вывод, что в качестве подпрограммы можно оформить нахождение наибольшего общего кратного двух чисел (НОК). Причем эта подпрограмма должна быть функцией, так как она должна возвращать найденное число. Теперь рассмотрим, как найти НОК.

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

    Приведем текст программы:

Program Problem43_1; 
Var
  a,b,c,d,Rez:Word;
Function NOK(x,y:Word):Word; 
{Функция осуществляет поиск НОК 2-х чисел.}
{Входные параметры - 2 значения типа Word.}
{Выходное значение - число типа Word.}
Var
  z:Word;
Begin
  If x>y Then z:=x Else z:=y;
  While Not((z mod x=0) and (z mod y=0)) Do
          z:=z+1;
  NOK:=z;
End;
Begin
  WriteLn('Задайте 4 числа:');
  ReadLn(a,b,c,d);
  Rez:=NOK(NOK(NOK(a,b),c),d);
  WriteLn('Результат = ',Rez);
End.
Текст этой программы можно взять здесь.


    Совет. Выполните программу по шагам, используя клавишу F7, и анализируя значения переменных x и y, создав окно Watches с помощью пункта меню Debig|Watch. Обратите внимание на то, как компьютер выполняет строку Rez:=NOK(NOK(NOK(a,b),c),d);.