Semiprime: Difference between revisions
Content added Content deleted
m (added whitespace, added a Task and example (bold) headers.) |
(Added Elixir) |
||
Line 287: | Line 287: | ||
1679 -> true |
1679 -> true |
||
1680 -> false</pre> |
1680 -> false</pre> |
||
=={{header|DCL}}== |
=={{header|DCL}}== |
||
Given a file primes.txt is the list of primes up to the sqrt(2^31-1), i.e. 46337; |
Given a file primes.txt is the list of primes up to the sqrt(2^31-1), i.e. 46337; |
||
Line 370: | Line 371: | ||
→ (2 50000000021) |
→ (2 50000000021) |
||
</lang> |
</lang> |
||
=={{header|Elixir}}== |
|||
<lang elixir>defmodule Prime do |
|||
def semiprime?(n), do: length(decomposition(n)) == 2 |
|||
def decomposition(n), do: decomposition(n, 2, []) |
|||
defp decomposition(n, k, acc) when n < k*k, do: Enum.reverse(acc, [n]) |
|||
defp decomposition(n, k, acc) when rem(n, k) == 0, do: decomposition(div(n, k), k, [k | acc]) |
|||
defp decomposition(n, k, acc), do: decomposition(n, k+1, acc) |
|||
end |
|||
IO.inspect Enum.filter(1..100, &Prime.semiprime?(&1)) |
|||
Enum.each(1675..1680, fn n -> |
|||
:io.format "~w -> ~w\t~s~n", [n, Prime.semiprime?(n), Prime.decomposition(n)|>Enum.join(" x ")] |
|||
end)</lang> |
|||
{{out}} |
|||
<pre> |
|||
[4, 6, 9, 10, 14, 15, 21, 22, 25, 26, 33, 34, 35, 38, 39, 46, 49, 51, 55, 57, |
|||
58, 62, 65, 69, 74, 77, 82, 85, 86, 87, 91, 93, 94, 95] |
|||
1675 -> false 5 x 5 x 67 |
|||
1676 -> false 2 x 2 x 419 |
|||
1677 -> false 3 x 13 x 43 |
|||
1678 -> true 2 x 839 |
|||
1679 -> true 23 x 73 |
|||
1680 -> false 2 x 2 x 2 x 2 x 3 x 5 x 7 |
|||
</pre> |
|||
=={{header|Erlang}}== |
=={{header|Erlang}}== |
||
Line 501: | Line 530: | ||
ok |
ok |
||
</pre> |
</pre> |
||
=={{Header|Go}}== |
=={{Header|Go}}== |
||
<lang go>package main |
<lang go>package main |
||
Line 849: | Line 879: | ||
return 0; /* never used */ |
return 0; /* never used */ |
||
}</lang> |
}</lang> |
||
=={{header|Pascal}}== |
=={{header|Pascal}}== |
||
{{libheader|primTrial}}{{works with|Free Pascal}} |
{{libheader|primTrial}}{{works with|Free Pascal}} |