Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
20
Добавлен:
25.04.2015
Размер:
904 б
Скачать
{$mode objfpc}

var
m, m1, x, x1: integer;

function extended_euclid(a, b: integer; var a1, b1: integer): integer;
var
original_a, original_b, t: integer;
aa, ab, ba, bb, ta, tb: integer;

begin
writeln('extended euclid for ', a, ' ', b);

original_a := a;
original_b := b;

aa := 1; ab := 0;
ba := 0; bb := 1;
while a <> 0 do begin
ta := aa;
tb := ab;
t := a;

aa := ba - ta*(b div a);
ab := bb - tb*(b div a);
a := b - a*(b div a);

ba := ta;
bb := tb;
b := t;
writeln(a, ' ', b);
end;
writeln('gcd = ', b);
writeln(original_a, '*', ba, ' + ', original_b, '*', bb, ' = ', b);

result := b;
a1 := ba; b1 := bb;
end;

begin
read(m, x);

extended_euclid(m, x, m1, x1);

writeln(x, '*', x1, ' mod m = ', (x*x1) mod m);
end.

Соседние файлы в папке 14_numeric