RosettaCodeData/Task/Modular-inverse/Zkl/modular-inverse.zkl

6 lines
173 B
Text
Raw Permalink Normal View History

2017-09-23 10:01:46 +02:00
fcn gcdExt(a,b){
if(b==0) return(1,0,a);
q,r:=a.divr(b); s,t,g:=gcdExt(b,r); return(t,s-q*t,g);
}
fcn modInv(a,m){i,_,g:=gcdExt(a,m); if(g==1) {if(i<0)i+m} else Void}