Я оканчательно запутался в паскале

01.01.2001

я оканчательно запутался в паскале
задание такое: Напишите эффективную программу, которая по двум данным натуральным числам x и y, не превосходящим 10 000, находит наибольший общий делитель, то есть самое большое натуральное число, на которое x и y делятся без остатка. Программа получает на вход два натуральных числа x и y, при этом гарантируется, что 1 ≤ x ≤ y ≤ 10 000. Проверять входные данные на корректность не нужно. Программа должна вывести одно число — наибольший общий делитель.

С маленькими значениями получается, а вот побольше-нет. я многое уже попробовал, не помогло. где надо исправить? Согласен, написал через одно место, но это у меня только зачатки изучения паскаля

var x, y, z, i, del: integer;
begin
readln (x,y);
if (x>y) then
z:=y
else
z:=x;
del:=z;
for i:=z to -30000 do begin
if (x mod del = 0) and (y mod del = 0) then
del:=del+0
else
del:=del-1;
end;
writeln (del);
end.

  • примени мою прогу к своей
    uses crt;
    var
    a, b, c, gcd: integer;
    function nod(x,y:integer):integer;
    begin
    while (x <> 0) and (y <> 0) do
    if x > y then x := x mod y else y := y mod x;
    nod := x + y;
    end;
    begin
    cls;
    write('vvesti 3 chisla --> '); readln(a, b,c);
    { while (a <> 0) and (b <> 0) do
    if a > b then a := a mod b else b := b mod a;
    gcd := a + b; }
    gcd:=nod(nod(a,b),c);
    writeln('НОД: ', gcd);
    readkey;
    end.

Вас заинтересует