019f8fd211
git-subtree-dir: users/wpcarro git-subtree-mainline:464bbcb15c
git-subtree-split:24f5a642af
Change-Id: I6105b3762b79126b3488359c95978cadb3efa789
33 lines
564 B
Elixir
33 lines
564 B
Elixir
defmodule Server do
|
|
@moduledoc """
|
|
Documentation for `Server`.
|
|
"""
|
|
|
|
@doc """
|
|
If `n` contains exactly two prime factors, return those prime factors;
|
|
otherwise, return nothing.
|
|
"""
|
|
def semiprime(n) do
|
|
case Cache.get(n) do
|
|
nil ->
|
|
case do_semiprime(n) do
|
|
nil ->
|
|
nil
|
|
|
|
res ->
|
|
Cache.put(n, res)
|
|
{:miss, res}
|
|
end
|
|
|
|
hit ->
|
|
{:hit, hit}
|
|
end
|
|
end
|
|
|
|
defp do_semiprime(n) do
|
|
case Math.factor(n) do
|
|
[_, _] = res -> res
|
|
_ -> nil
|
|
end
|
|
end
|
|
end
|