ОСОБЕННОСТИ ПРОГРАММИРОВАНИЯ АЛГОРИТМА
В первую очередь, следует найти массив , , согласно алгоритму (2). Размерность динамического массива n определяется тем признаком, что остаток должен стать равным единице. После этого организуется цепочка равенств: ; . Ответом является последняя пара чисел (x, y).
procedure m_alpha(a, b: longint; var n: longint; var alpha: tarr; var indicator: boolean); var indicator: boolean); var c, cc: longint; begin indicator:= true; n:= 1; setlength(alpha,n+1); GCD:= b; c:= a mod b; cc:= c; while c > 0 do begin alpha[n]:= a div b; c:= a mod b; a:= b; b:= c; inc(n); setlength(alpha,n+1); end; alpha[n]:= 0; if cc > 0 then GCD:= a; indicator:= GCD = 1; end;
procedure solve_diofant(n: longint; alpha: tarr; var x, y: longint); var i, xx, yy: longint; begin x:= 0; y:= 1; for i:= n downto 1 do begin xx:= y; yy:= x - alpha[i]*y; x:= xx; y:= yy; end; end;
|