Files
comp4958/labs/02/primes.exs
T
2026-09-17 20:00:35 -07:00

43 lines
806 B
Elixir

defmodule Primes do
defp sieve([], acc, _) do
Enum.reverse(acc)
end
defp sieve([h | t], acc, n) do
if h * h > n do
Enum.reverse(acc) ++ [h | t]
else
sieve(
Enum.filter(t, fn x -> rem(x, h) != 0 end),
[h | acc],
n)
end
end
def primes(n) do
l = Enum.to_list(2..n)
sieve(l, [], n)
end
defp largest_permutation_set(p) do
p |> Enum.group_by(fn x -> x
|> Integer.to_string()
|> String.to_charlist()
|> Enum.sort() end)
|> Map.values()
|> Enum.max_by(&length/1)
end
def run(n, d) do
p = primes(n)
p = Enum.filter(p, fn x ->
String.length(Integer.to_string(x)) >= d
end)
IO.puts(length(p))
IO.puts(length(largest_permutation_set(p)))
end
end
Primes.run(1_000_000, 6);