Sexy primes: Difference between revisions
→{{header|Factor}}: update for new task requirements
m (→{{header|zkl}}: well, that was pedantic) |
(→{{header|Factor}}: update for new task requirements) |
||
Line 33:
=={{header|Factor}}==
<lang factor>USING: combinators.short-circuit fry interpolate io kernel
literals locals make math math.primes math.ranges prettyprint qw
sequences tools.memory.private ;
IN: rosetta-code.sexy-primes
CONSTANT:
CONSTANT: primes $[ limit primes-upto ]
CONSTANT: tuplet-names qw{ pair triplet quadruplet quintuplet }
: tuplet ( m n -- seq ) dupd 1 - 6 * + 6 <range> ;
: viable-tuplet? ( seq -- ? )
[ [ prime? ] [ limit < ] bi and ] all? ;
: sexy-tuplets ( n -- seq ) [ primes ] dip '[
[ _ tuplet dup
] { } make ;
: ?last5 ( seq -- seq' ) 5 short tail* ;
: last5 ( seq -- str )
?last5 [ { } like unparse ] map " " join ;
:: tuplet-info ( n -- last5 l5-len num-tup limit tuplet-name )
n sexy-tuplets :> tup tup last5 tup ?last5 length tup length
: show-tuplets ( n -- )
tuplet-info
▲ "Number of sexy prime " write dup 2 - tuplet-names nth write
[I Number of sexy prime ${0}s < ${1}: ${2}I] nl
[I Last ${0}: ${1}I] nl nl ;
: unsexy-primes ( -- seq ) primes [
Line 58 ⟶ 70:
: show-unsexy ( -- )
[I Number of unsexy primes < ${0}: ${1}I] nl
"Last 10: " write 10 short tail* [ pprint bl ] each nl ;
: main ( -- ) 2 5 [a,b] [ show-tuplets ] each show-unsexy ;
Line 67 ⟶ 79:
{{out}}
<pre>
Number of sexy prime pairs
Number of sexy prime triplets
Number of sexy prime quadruplets
Number of sexy prime quintuplets
Number of unsexy primes
Last 10:
</pre>
|