diff --git a/archive/e/elixir/prime-number.ex b/archive/e/elixir/prime-number.ex new file mode 100644 index 000000000..99f3c1cb0 --- /dev/null +++ b/archive/e/elixir/prime-number.ex @@ -0,0 +1,25 @@ +defmodule PrimeNumber do + @doc """ + Determines whether `n` is a prime number. + """ + @spec prime?(n :: integer()) :: bool() + def prime?(0), do: false + def prime?(1), do: false + + def prime?(n) do + high = trunc(:math.sqrt(n)) + + if high < 2 do + true + else + Enum.all?(2..high, &(rem(n, &1) != 0)) + end + end +end + +with [arg] <- System.argv(), + {n, ""} when n >= 0 <- Integer.parse(arg) do + IO.puts(if PrimeNumber.prime?(n), do: "prime", else: "composite") +else + _ -> IO.puts("Usage: please input a non-negative integer") +end