Fortunate numbers: Difference between revisions

(Added 11l)
Line 251:
λ> 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>
 
=={{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}}==
2,458

edits