Elixir Count Factors
defmodule CountFactors do
def count_factors(n), do: loop(1, 0, n)
defp loop(i, count, n) when i * i < n do
count = if rem(n, i) == 0, do: count + 2, else: count
loop(i + 1, count, n)
end
defp loop(i, count, n) do
if i * i == n, do: count + 1, else: count
end
end
This checks divisors in pairs up to the square root, which keeps the work much smaller than testing every number.