Sha256: 128983f2ee7520c2014c9056936a18ff49ac53571d980737d211b52d15acb199

Contents?: true

Size: 656 Bytes

Versions: 327

Compression:

Stored size: 656 Bytes

Contents

defmodule Prime do

  @doc """
  Generates the nth prime.
  """
  @spec nth(non_neg_integer) :: non_neg_integer
  def nth(count) do
    if count < 1, do: raise ArgumentError
    nth(count, 1000)
  end

  defp nth(count, max) do
    primes = primes_to(max)
    cond do
      Enum.count(primes) < count -> nth(count, max * 4)
      true -> Enum.at(primes, count - 1)
    end
  end

  defp primes_to(limit) do
    Enum.reduce(2..limit, [], fn(number, primes) ->
      if is_prime?(number, primes), do: [number|primes], else: primes end)
      |> Enum.reverse
  end

  defp is_prime?(number, primes) do
    Enum.all?(primes, &(rem(number, &1) != 0))
  end

end

Version data entries

327 entries across 327 versions & 1 rubygems

Version Path
trackler-2.2.1.109 tracks/elixir/exercises/nth-prime/example.exs
trackler-2.2.1.108 tracks/elixir/exercises/nth-prime/example.exs
trackler-2.2.1.107 tracks/elixir/exercises/nth-prime/example.exs
trackler-2.2.1.106 tracks/elixir/exercises/nth-prime/example.exs
trackler-2.2.1.105 tracks/elixir/exercises/nth-prime/example.exs
trackler-2.2.1.104 tracks/elixir/exercises/nth-prime/example.exs
trackler-2.2.1.103 tracks/elixir/exercises/nth-prime/example.exs
trackler-2.2.1.102 tracks/elixir/exercises/nth-prime/example.exs
trackler-2.2.1.101 tracks/elixir/exercises/nth-prime/example.exs
trackler-2.2.1.100 tracks/elixir/exercises/nth-prime/example.exs
trackler-2.2.1.99 tracks/elixir/exercises/nth-prime/example.exs
trackler-2.2.1.98 tracks/elixir/exercises/nth-prime/example.exs
trackler-2.2.1.97 tracks/elixir/exercises/nth-prime/example.exs
trackler-2.2.1.96 tracks/elixir/exercises/nth-prime/example.exs
trackler-2.2.1.95 tracks/elixir/exercises/nth-prime/example.exs
trackler-2.2.1.94 tracks/elixir/exercises/nth-prime/example.exs
trackler-2.2.1.93 tracks/elixir/exercises/nth-prime/example.exs
trackler-2.2.1.92 tracks/elixir/exercises/nth-prime/example.exs
trackler-2.2.1.91 tracks/elixir/exercises/nth-prime/example.exs
trackler-2.2.1.90 tracks/elixir/exercises/nth-prime/example.exs