[gforth] / gforth / sieve.fs  

gforth: gforth/sieve.fs


1 : anton 1.1 #! /usr/stud/paysan/bin/forth
2 :    
3 : pazsan 1.2 DECIMAL
4 : pazsan 1.3 : SECS TIME&DATE 2DROP DROP 60 * + 60 * + ;
5 : pazsan 1.2 CREATE FLAGS 8190 ALLOT
6 :     FLAGS 8190 + CONSTANT EFLAG
7 : anton 1.1
8 :     : PRIMES ( -- n ) FLAGS 8190 1 FILL 0 3 EFLAG FLAGS
9 :     DO I C@
10 :     IF DUP I + DUP EFLAG <
11 :     IF EFLAG SWAP
12 :     DO 0 I C! DUP +LOOP
13 : pazsan 1.2 ELSE DROP THEN SWAP 1+ SWAP
14 : anton 1.1 THEN 2 +
15 :     LOOP DROP ;
16 :    
17 : pazsan 1.2 : BENCHMARK 0 100 0 DO PRIMES NIP LOOP ;
18 :     SECS BENCHMARK . SECS SWAP - CR . .( secs)
19 :    
20 : anton 1.1 \ HPPA/720, 50 MHz: user 3.90s

CVS Admin

Powered by ViewCVS 1.0-dev
(Powered by ViewCVS)

ViewCVS and CVS Help