RosettaCodeData/Task/Modular-inverse/ASIC/modular-inverse.asic

30 lines
541 B
Plaintext

REM Modular inverse
E = 42
T = 2017
GOSUB CalcModInv:
PRINT ModInv
END
CalcModInv:
REM Increments E Step times until Bal is greater than T
REM Repeats until Bal = 1 (MOD = 1) and returns Count
REM Bal will not be greater than T + E
D = 0
IF E < T THEN
Bal = E
Count = 1
Loop:
Step = T - Bal
Step = Step / E
Step = Step + 1
REM So ... Step = (T - Bal) / E + 1
StepTimesE = Step * E
Bal = Bal + StepTimesE
Count = Count + Step
Bal = Bal - T
IF Bal <> 1 THEN Loop:
D = Count
ENDIF
ModInv = D
RETURN