Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
26
Task/Modular-inverse/ERRE/modular-inverse.erre
Normal file
26
Task/Modular-inverse/ERRE/modular-inverse.erre
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
PROGRAM MOD_INV
|
||||
|
||||
!$INTEGER
|
||||
|
||||
PROCEDURE MUL_INV(A,B->T)
|
||||
LOCAL NT,R,NR,Q,TMP
|
||||
IF B<0 THEN B=-B
|
||||
IF A<0 THEN A=B-(-A MOD B)
|
||||
T=0 NT=1 R=B NR=A MOD B
|
||||
WHILE NR<>0 DO
|
||||
Q=R DIV NR
|
||||
TMP=NT NT=T-Q*NT T=TMP
|
||||
TMP=NR NR=R-Q*NR R=TMP
|
||||
END WHILE
|
||||
IF (R>1) THEN T=-1 EXIT PROCEDURE ! NO INVERSE
|
||||
IF (T<0) THEN T+=B
|
||||
END PROCEDURE
|
||||
|
||||
|
||||
BEGIN
|
||||
MUL_INV(42,2017->T) PRINT(T)
|
||||
MUL_INV(40,1->T) PRINT(T)
|
||||
MUL_INV(52,-217->T) PRINT(T) ! pari semantics for negative modulus
|
||||
MUL_INV(-486,217->T) PRINT(T)
|
||||
MUL_INV(40,2018->T) PRINT(T)
|
||||
END PROGRAM
|
||||
Loading…
Add table
Add a link
Reference in a new issue