Бред пьяного ёжика :)
Нечасто получаешь сообщения бредовей. Человека интересовало, почему "-3,4 даёт -3,1, а -4,3 остаётся без изменений, 4,-3 при этом преобразуется в 1,-3, а 3,-4 тоже без изменений."
На самом деле нетрудно описать словами, что делает этот алгоритм. Но надо ли? :)
procedure f(var x,y:integer); begin repeat if (y<x) and (y<>0) then x := x mod y else if (x<y) and (x<>0) then y := y mod x else break; if (y<>0) and (x=x mod y) or (x<>0) and (y=y mod x) then break; until (x=0) or (y=0) or (y=x); end; var x,y,x1,y1,n:integer; begin n:=0; for y:=-10 to 10 do begin for x:=-10 to 10 do begin x1:=x; y1:=y; f(x1,y1); write (x,',',y,': ',x1,',',y1,#9); inc(n); if n>3 then begin n:=0; writeln; end; end; end; end.
Речь-то шла о реализации алгоритмов НОД и НОК для пары целых чисел, найти человеческие реализации на Си можно вот здесь, а на Паскале, при сохранении имеющегося теста, они будут выглядеть следующим образом:
function nod (x:integer; y:integer):integer; var n:integer; begin if y=0 then n:=x else n:=nod(y, x mod y); nod:=n; end; function nok (x:integer; y:integer):integer; begin nok:= x div nod(x,y)*y; end; var x,y,x1,y1,n:integer; begin n:=0; for x:=-10 to 10 do for y:=-10 to 10 do if x<>y then begin write (x,',',y,': ',nod(x,y),',',nok(x,y),#9); inc(n); if n>3 then begin n:=0; writeln; end; end; end.
Кстати, выполнить онлайн несложный паскаль-код по-прежнему можно вот тут - уже нельзя, но есть другие онлайн-IDE.
18.01.2016, 11:24 [4925 просмотров]