Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
36
Добавлен:
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