RosettaCodeData/Task/Modular-inverse/Crystal/modular-inverse.crystal
2023-07-01 13:44:08 -04:00

12 lines
194 B
Text

def modinv(a0, m0)
return 1 if m0 == 1
a, m = a0, m0
x0, inv = 0, 1
while a > 1
inv -= (a // m) * x0
a, m = m, a % m
x0, inv = inv, x0
end
inv += m0 if inv < 0
inv
end