Варианты записи алгоритма с помощью языка программирования TurdoPascal. Program Grasshopper; Const k=9; l=5; Var x, nod:integer; BEGIN Write(‘Введите координату кузнечика’); Readln(x); repeat if (k>l) then k:=k-l else l:=l-k; until (k=l); NOD:=k; if ((x div nod)=0) then Writeln(‘Координата кузнечика может принимать значение равное’,x) else Writeln(‘Координата кузнечика не может принимать значение равное’,x); END. Преобразование осуществляется по новому правилу: большее из чисел (или любое в случае равенства) заменяется остатком от деления на меньшее. Далее действуют так же, как и в методе вычитаний. Оказывается, с помощью этого метода тоже можно получить НОД исходного набора чисел. Program Grasshopper; Const k=9; l=5; Var x, nod:integer; BEGIN Write(‘Введите координату кузнечика’); Readln(x); while ((k<>0) and (l<>0)) do if (k>=l) then k:= k mod l else l:= l mod k; nod:= k+l; If ((x div NOD)=0) then Writeln(‘Кордината кузнечика может принимать значение равное’,x) else Writeln(‘Кордината кузнечика не может принимать значение равное’,x); END. Этот вариант алгоритма Евклида относится к числу "быстрых" алгоритмов. На каждом шаге этого алгоритма большее число уменьшается более чем вдвое – например, для чисел {1999; 1000} после первого шага число 1999 будет заменено на 999 (то есть 1999 уменьшится более чем вдвое), если же взять пары {1999; 1001} или {1999, 999}, то после первого шага получим соответственно 998 для первой пары и 1 для второй. Вариации второго числа только уменьшают остаток.