RosettaCodeData/Task/Emirp-primes/Factor/emirp-primes.factor
2023-07-01 13:44:08 -04:00

31 lines
703 B
Factor

USING: io kernel lists lists.lazy math.extras math.parser
math.primes sequences ;
FROM: prettyprint => . pprint ;
IN: rosetta-code.emirp
: rev ( n -- n' )
number>string reverse string>number ;
: emirp? ( n -- ? )
dup rev [ = not ] [ [ prime? ] bi@ ] 2bi and and ;
: nemirps ( n -- seq )
0 lfrom [ emirp? ] lfilter ltake list>array ;
: print-seq ( seq -- )
[ pprint bl ] each nl ;
: part1 ( -- )
"First 20 emirps:" print 20 nemirps print-seq ;
: part2 ( -- )
"Emirps between 7700 and 8000:" print
7700 ... 8000 [ emirp? ] filter print-seq ;
: part3 ( -- )
"10,000th emirp:" print 10,000 nemirps last . ;
: main ( -- )
part1 nl part2 nl part3 ;
MAIN: main