Решим двумя вариантами: по Евклиду и с помощью оператора mod.
Проще сформулировать алгоритм Евклида так: если даны натуральные числа a и b
и, пока получается положительное число, по очереди вычитать из большего меньшее,
то в результате получится НОД.
решим двумя вариантами по евклиду и с помощью деления по модулю.
вариант первый
program nod_ewklid;
var
a, b : integer;
nod : integer;
begin
writeln('Введите первое число.'); readln(a);
writeln('Введите второе число.'); readln(b);
nod := 0;
while (a > 0) and (b > 0) do
begin
if a >= b then a := a - b
else b := b - a;
if a >= b then nod := a
else nod := b;
end;
if nod = 0 then writeln('НОД не найден.')
else writeln('НОД = ', nod);
readln;
end.
с помощью оператора mod
program nod_mod;
var
a, b : integer;
nod : integer;
begin
writeln('Введите первое число.'); readln(a);
writeln('Введите второе число.'); readln(b);
nod := 0;
while (a > 0) and (b > 0) do
begin
if a >= b then a := a mod b
else b := b mod a;
nod := a + b;
end;
if nod = 0 then writeln('НОД не найден.')
else writeln('НОД = ', nod);
readln;
end.