Sha256: caf5bb38146e9a67846f568c1dd2b232177b2b00c881acc0a2ce809f79847ad9

Contents?: true

Size: 451 Bytes

Versions: 327

Compression:

Stored size: 451 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

327 entries across 327 versions & 1 rubygems

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