Data commit

This commit is contained in:
Ingy döt Net 2023-07-01 11:58:00 -04:00
parent 7387c8f97b
commit cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions

View file

@ -0,0 +1,33 @@
defmodule Emirp do
defp prime?(2), do: true
defp prime?(n) when n<2 or rem(n,2)==0, do: false
defp prime?(n), do: prime?(n,3)
defp prime?(n,k) when n<k*k, do: true
defp prime?(n,k) when rem(n,k)==0, do: false
defp prime?(n,k), do: prime?(n,k+2)
def emirp?(n) do
if prime?(n) do
reverse = to_string(n) |> String.reverse |> String.to_integer
n != reverse and prime?(reverse)
end
end
def task do
emirps = Stream.iterate(1, &(&1+1)) |> Stream.filter(&emirp?/1)
first = Enum.take(emirps,20) |> Enum.join(" ")
IO.puts "First 20 emirps: #{first}"
between = Enum.reduce_while(emirps, [], fn x,acc ->
cond do
x < 7700 -> {:cont, acc}
x in 7700..8000 -> {:cont, [x | acc]}
true -> {:halt, Enum.reverse(acc)}
end
end) |> Enum.join(" ")
IO.puts "Emirps between 7,700 and 8,000: #{between}"
IO.puts "10,000th emirp: #{Enum.at(emirps, 9999)}"
end
end
Emirp.task