Программа находит наибольший общий делитель двух целых чисел, используя простейший циклический алгоритм — Pascal(Паскаль)

Если одно или оба числа равны 0, возвращает |a+b|

function NOD(a, b: integer): integer;
var
  min, i: integer;
begin
  { если одно или оба числа равны 0 }
  if ((a = 0) or (b = 0)) then
  begin
    NOD := abs(a + b);
    exit;
  end;
  { находим минимальное из a и b }
  if a < b then
    min := a
  else
    min := b;
  { каждое из чисел 1..min проверяем на то, что и а, и b делятся на него без остатка }
  for i := min downto 1 do
    if (((a mod i) = 0) and ((b mod i) = 0)) then
    begin
      NOD := i;
      exit;
    end;
end;

begin
  writeln('Программа находит максимальный общий делитель ' +
    'двух заданных целых чисел, используя простейший циклический алгоритм');
  write('Введите первое число ');
  readln(a);
  write('Введите второе число ');
  readln(b);
  writeln('НОД(', a, ',', b, ') = ', NOD(abs(a), abs(b)));
  writeln('Нажмите [Enter] для завершения программы');
  readln;

end.

Leave a Comment

− 4 = 6