Pernicious numbers: Difference between revisions

Content added Content deleted
(Added Forth solution)
m (Forth - simpler primality test)
Line 864: Line 864:
0
0
begin
begin
n 0 <>
n 0<>
while
while
n n 1- and to n
n n 1- and to n
Line 870: Line 870:
repeat ;
repeat ;


\ primality test for 0 <= n <= 63
: prime? { n -- ? }
: prime? ( n -- ? )
n 2 < if false exit then
1 swap lshift 0x28208a20a08a28ac and 0<> ;
n 2 mod 0= if n 2 = exit then
n 3 mod 0= if n 3 = exit then
5
begin
dup dup * n <=
while
n over mod 0= if drop false exit then
2 +
n over mod 0= if drop false exit then
4 +
repeat
drop true ;


: pernicious? ( n -- ? )
: pernicious? ( n -- ? )