1 ( ARCHETYPICAL IMPLEMENTATION )
2 ( OF THE SIEVE OF ERATOSTHENES )
3 ( IN FORTH -- BIF, FIG -- )
4 ( USING A LITTLE MORE )
5 ( OF THE FORTH AND BIF IDIOMS. )
6 ( COPYRIGHT 2015, 2019,
8 ( BY JOEL MATTHEW REES, )
9 ( AMAGASAKI, JAPAN, 2015 )
10 ( ALL RIGHTS RESERVED. )
11 ( PERMISSION GRANTED BY THE )
12 ( AUTHOR TO USE THIS CODE )
16 ( SHALL RETAIN THIS COPYRIGHT )
17 ( AND PERMISSION NOTICE. )
21 VOCABULARY SIEVE-LOCAL
22 ( MAKE A LOCAL SYMBOL TABLE. )
23 SIEVE-LOCAL DEFINITIONS
36 ( TO DISPLAY MAXSIEVE )
40 ( OLD FORTHS DON'T PROVIDE A )
41 ( DEFAULT BEHAVIOR FOR CREATE )
42 ( NEW FORTHS WILL LEAVE )
47 ( OLD FORTHS DON'T PROVIDE )
49 HERE SIEVE - DUP ( CELLWIDTH )
52 ( OF THE BYTE ARRAY. )
55 ( NOW DEFINE THE CONSTANT: )
58 : NOT-PRIME! ( ADR N -- )
61 : IS-PRIME? ( ADR N -- F )
66 : SIEVE-INIT ( ADR -- )
70 ( FOR 2 TO FINALPASS. )
71 2+ MAXSIEVE 2- -1 FILL
75 : PRIME-PASS ( ADR PRIME -- )
76 ( DOUBLE IS FIRST MULTIPLE )
77 MAXSIEVE OVER DUP + DO
79 DUP +LOOP ( NEXT MULTIPLE )
82 : FIND-PRIMES ( ADR -- )
98 : COUNT-PRIMES ( ADR -- )
108 : PRINT-ALL ( ADR -- )
110 I DISPWIDTH .R ." : IS "
111 DUP I IS-PRIME? 0= IF
119 : PRINT-PRIMES ( ADR -- )
136 SIEVE PRINT-PRIMES CR
138 SIEVE COUNT-PRIMES . CR ;
144 ( 8192: 8 SECONDS TO FIND )
146 ( XROAR, NORMAL CLOCK )