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 make
literals locals make math math.primes math.ranges prettyprint qw sequences ;
sequences tools.memory.private ;
IN: rosetta-code.sexy-primes
 
CONSTANT: primes $[limit 1,000,000 primes-upto ]035
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 [ prime? ] allviable-tuplet? [ , ] [ drop ] if ] each
] { } 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
"Numbercommas oflimit sexycommas prime " write dupn 2 - tuplet-names nth write;
 
: 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
"s less than 1,000,000: " write sexy-tuplets dup length .
[I Last ${0}: ${1}I] nl nl ;
5 short tail* "Up to last 5: " write [ { } like pprint bl ]
each nl nl ;
 
: unsexy-primes ( -- seq ) primes [
Line 58 ⟶ 70:
 
: show-unsexy ( -- )
"Number of unsexy -primes lessdup thanlength 1,000,000:commas "limit writecommas
[I Number of unsexy primes < ${0}: ${1}I] nl
unsexy-primes dup length . "Last 10: " write
"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 less than< 1,000,000035: 1638616,386
Up to lastLast 5: { 999371 999377 } { 999431 999437 } { 999721 999727 } { 999763 999769 } { 999953 999959 }
 
Number of sexy prime triplets less than< 1,000,000035: 29002,900
Up to lastLast 5: { 997427 997433 997439 } { 997541 997547 997553 } { 998071 998077 998083 } { 998617 998623 998629 } { 998737 998743 998749 }
 
Number of sexy prime quadruplets less than< 1,000,000035: 325
Up to lastLast 5: { 977351 977357 977363 977369 } { 983771 983777 983783 983789 } { 986131 986137 986143 986149 } { 990371 990377 990383 990389 } { 997091 997097 997103 997109 }
 
Number of sexy prime quintuplets less than< 1,000,000035: 1
UpLast to last 51: { 5 11 17 23 29 }
 
Number of unsexy primes less than< 1,000,000035: 4862648,627
Last 10: 999809 999853 999863 999883 999907 999917 999931 999961 999979 999983 1000003
</pre>
 
1,827

edits