Factorial primes: Difference between revisions
Content added Content deleted
SqrtNegInf (talk | contribs) (Added Perl) |
|||
Line 135: | Line 135: | ||
(i.28x here would have given us an eleventh prime, but the task asked for the first 10, and the stretch goal requires considerable patience.) |
(i.28x here would have given us an eleventh prime, but the task asked for the first 10, and the stretch goal requires considerable patience.) |
||
=={{header|jq}}== |
|||
The following jq program has been tested with both the C and Go implementations |
|||
of jq. The latter supports unbounded-precision arithmetic, but the former |
|||
has sufficient accuracy to compute the first 10 factorial primes. |
|||
However, the implementation of `is_prime` used here is not sufficiently |
|||
fast to compute more than the first 10 primes in a reasonable amount of time. |
|||
<syntaxhighlight lang="jq"> |
|||
# The algorithm is quite fast because the state of `until` is just a number and we skip by 2 or 4 |
|||
def is_prime: |
|||
. as $n |
|||
| if ($n < 2) then false |
|||
elif ($n % 2 == 0) then $n == 2 |
|||
elif ($n % 3 == 0) then $n == 3 |
|||
else 5 |
|||
| until( . <= 0; |
|||
if .*. > $n then -1 |
|||
elif ($n % . == 0) then 0 |
|||
else . + 2 |
|||
| if ($n % . == 0) then 0 |
|||
else . + 4 |
|||
end |
|||
end) |
|||
| . == -1 |
|||
end; |
|||
def factorial_primes: |
|||
foreach range(1; infinite) as $i (1; . * $i; |
|||
if ((.-1) | is_prime) then [($i|tostring) + "! - 1 = ", .-1] else empty end, |
|||
if ((.+1) | is_prime) then [($i|tostring) + "! + 1 = ", .+1] else empty end ) ; |
|||
limit(20; factorial_primes) |
|||
| .[1] |= (tostring | (if length > 40 then .[:20] + " .. " + .[-20:] else . end)) |
|||
| add |
|||
</syntaxhighlight> |
|||
Invocation: jq -nr -f factorial-primes.jq |
|||
{{output}} |
|||
<pre> |
|||
1! + 1 = 2 |
|||
2! + 1 = 3 |
|||
3! - 1 = 5 |
|||
3! + 1 = 7 |
|||
4! - 1 = 23 |
|||
6! - 1 = 719 |
|||
7! - 1 = 5039 |
|||
11! + 1 = 39916801 |
|||
12! - 1 = 479001599 |
|||
14! - 1 = 87178291199 |
|||
# terminated |
|||
</pre> |
|||
=={{header|Julia}}== |
=={{header|Julia}}== |