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

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

code: #pascal
program nood;
var
  a, b: integer;
 
(----------------------------------------
Функция возвращает наибольший общий делитель двух
заданных целых чисел, используя простейший циклический
алгоритм
Если одно или оба числа равны 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.

автор: JaOleg

Поделиться:

Похожие статьи: