ex_gcd扩展欧几里德求逆元模板pascal
有一问题求(A/B) mod p且A的值很大,此时答案不为((A mod p)/B) mod p,所以我们需要求逆元,逆元C定义为B*C mod p=1,由此可见,逆元只与除数和模数有关,原式A/B mod p=1两边同乘1即为A*C mod p,求逆元可用费马小定理,C=(B^(p-2)) mod p,但有限制,这里不详细讲,用快速幂即可,以下是扩展欧几里德求法,逆元即为x,第一次的a,b分别为除数与模数。
procedure ex_gcd(a,b:longint);var t:longint;begin if b=0 then begin x:=1; y:=0; end else begin ex_gcd(b,a mod b); t:=x;x:=y;y:=t-a div b*y; end;end;
浙公网安备 33010602011771号