This commit is contained in:
SowinskiBraeden committed 2026-09-08 14:14:16 -07:00
1 parent df82fb9242
commit b4f182024c
2 files changed
+36

No files matched your search

+36
View File
@@ -0,0 +1,36 @@
defmodule Lab1 do
# Question 1 - Multiplicitive inverse of a module n
defp inverse_mod(r, t, newr, _) when newr == 0 do {r, t} end
defp inverse_mod(r, t, newr, newt) do
q = div(r, newr)
inverse_mod(
newr,
newt,
r - q * newr,
t - q * newt
)
end
def inverse_mod(a, n) do
case inverse_mod(n, 0, a, 1) do
{r, _} when r > 1 ->
:not_invertable
{_, t} when t < 0 ->
t + n
{_, t} ->
t
end
end
# Question 2 - Fast modular exponent
defp pow_mod(acc, _, m, _) when m == 0, do: acc
defp pow_mod(acc, a, m, n), do: pow_mod(
rem(acc * a, n), a, m - 1, n
)
def pow_mod(a, m, n) do
rem(pow_mod(1, a, m, n), n)
end
end
File renamed without changes.