Fortunate numbers: Difference between revisions
Content added Content deleted
Alextretyak (talk | contribs) (Added 11l) |
|||
Line 251: | Line 251: | ||
λ> take 50 $ nub $ fortunateNumbers |
λ> take 50 $ nub $ fortunateNumbers |
||
[3,5,7,13,23,17,19,37,61,67,71,47,107,59,109,89,103,79,151,197,101,233,223,127,191,163,229,643,239,157,167,439,199,383,751,313,773,607,293,443,331,283,277,271,401,307,379,491,311,397]</pre> |
[3,5,7,13,23,17,19,37,61,67,71,47,107,59,109,89,103,79,151,197,101,233,223,127,191,163,229,643,239,157,167,439,199,383,751,313,773,607,293,443,331,283,277,271,401,307,379,491,311,397]</pre> |
||
=={{header|jq}}== |
|||
{{works with|jq}} |
|||
'''Works with gojq, the Go implementation of jq''' |
|||
See [[Erdős-primes#jq]] for a suitable definition of `is_prime` as used here. |
|||
This definition, however, is insufficiently efficient for calculating more than |
|||
the first few values of fortunate(n). Here we define `fortunates($limit)` |
|||
to be the array of length $limit comprised of the distinct values |
|||
of fortunate(n) for successive values of n. |
|||
<lang jq>def primes: |
|||
2, range(3; infinite; 2) | select(is_prime); |
|||
# generate an infinite stream of primorials |
|||
def primorials: |
|||
foreach primes as $p (1; .*$p; .); |
|||
# Emit a sorted array of the first $limit distinct fortunate numbers |
|||
# generated in order of the primoridials |
|||
def fortunates($limit): |
|||
label $out |
|||
| foreach primorials as $p ([]; |
|||
first( range(3; infinite; 2) | select($p + . | is_prime)) as $q |
|||
| . + [$q] | unique; |
|||
if length >= $limit then ., break $out else empty end); |
|||
fortunates(10)</lang> |
|||
{{out}} |
|||
<pre> |
|||
[3,5,7,13,17,19,23,37,61,67] |
|||
</pre> |
|||
=={{header|Julia}}== |
=={{header|Julia}}== |