var a,b:integer;
min,maxd,i:integer;
begin
write('Введите а ');
readln(a);
write('Введите b ');
readln(b);
if (a=0) or (b=0) then
begin
write('Ошибка! ноль вводить нельзя!');
halt
end;
if a>b then
min:=b
else
min:=a;
maxd:=1;
for i:=1 to min do
if (a mod i = 0) and (b mod i = 0) then
if i> maxd then
maxd:=i;
write('Наибольший общий делитель чисел',a,' и ',b,' равен: ',maxd);
readln;
end.
Вариант 2
var a, b, kol, i : longint;
function nsd(a, b : longint) : longint;
begin
while (a <> 0) and (b <> 0) do
if a >= b then
a := a mod b
else
b := b mod a;
nsd := a + b;
end;
begin
readln(a, b);
writeln(nsd(a, b));
end.