Sha256: 4313b8e130a5ae95d3eba12c5287074ef5e8204587e6854b9a60ffda6f1106c1

Contents?: true

Size: 448 Bytes

Versions: 69

Compression:

Stored size: 448 Bytes

Contents

defmodule Sieve do
  @doc """
  Generates a list of primes up to a given limit.
  """
  @spec primes_to(non_neg_integer) :: [non_neg_integer]
  def primes_to(limit) do
    Enum.to_list(2..limit) |> do_primes([]) |> Enum.reverse()
  end

  defp do_primes([], primes), do: primes

  defp do_primes([candidate | rest], primes) do
    candidates = Enum.reject(rest, &(rem(&1, candidate) == 0))
    do_primes(candidates, [candidate | primes])
  end
end

Version data entries

69 entries across 69 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/elixir/exercises/sieve/example.exs
trackler-2.2.1.179 tracks/elixir/exercises/sieve/example.exs
trackler-2.2.1.178 tracks/elixir/exercises/sieve/example.exs
trackler-2.2.1.177 tracks/elixir/exercises/sieve/example.exs
trackler-2.2.1.176 tracks/elixir/exercises/sieve/example.exs
trackler-2.2.1.175 tracks/elixir/exercises/sieve/example.exs
trackler-2.2.1.174 tracks/elixir/exercises/sieve/example.exs
trackler-2.2.1.173 tracks/elixir/exercises/sieve/example.exs
trackler-2.2.1.172 tracks/elixir/exercises/sieve/example.exs
trackler-2.2.1.171 tracks/elixir/exercises/sieve/example.exs
trackler-2.2.1.170 tracks/elixir/exercises/sieve/example.exs
trackler-2.2.1.169 tracks/elixir/exercises/sieve/example.exs
trackler-2.2.1.167 tracks/elixir/exercises/sieve/example.exs
trackler-2.2.1.166 tracks/elixir/exercises/sieve/example.exs
trackler-2.2.1.165 tracks/elixir/exercises/sieve/example.exs
trackler-2.2.1.164 tracks/elixir/exercises/sieve/example.exs
trackler-2.2.1.163 tracks/elixir/exercises/sieve/example.exs
trackler-2.2.1.162 tracks/elixir/exercises/sieve/example.exs
trackler-2.2.1.161 tracks/elixir/exercises/sieve/example.exs
trackler-2.2.1.160 tracks/elixir/exercises/sieve/example.exs