From f1e458239266dac1d18120c6c3b092a67a739577 Mon Sep 17 00:00:00 2001 From: William Carroll Date: Fri, 11 Dec 2020 22:43:26 +0000 Subject: Define Math module Support `Math.factor` and cover it with tests. --- assessments/semiprimes/server/lib/math.ex | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 assessments/semiprimes/server/lib/math.ex (limited to 'assessments/semiprimes/server/lib/math.ex') diff --git a/assessments/semiprimes/server/lib/math.ex b/assessments/semiprimes/server/lib/math.ex new file mode 100644 index 000000000000..8a33be475389 --- /dev/null +++ b/assessments/semiprimes/server/lib/math.ex @@ -0,0 +1,26 @@ +defmodule Math do + @moduledoc """ + Math utilities. + """ + alias Extras + + @doc """ + Returns the prime factors for `n`. + + ## Examples + + iex> Math.factor(15) + [3, 5] + + """ + def factor(1), do: [] + + def factor(n) do + Extras.range(2, n - 1) + |> Enum.find(&(rem(n, &1) == 0)) + |> case do + nil -> [n] + x -> [x | factor(div(n, x))] + end + end +end -- cgit 1.4.1