USING: bit-arrays kernel locals math math.functions math.ranges sequences ; IN: benchmark.sieve :: sieve ( n -- #primes ) n dup odd? [ 1 + ] when 2/ :> sieve t 0 sieve set-nth 3 n sqrt 2 [| i | i 2/ sieve nth [ i sq n i 2 * [| j | t j 2/ sieve set-nth ] each ] unless ] each sieve [ not ] count 1 + ; : sieve-benchmark ( -- ) 100,000,000 sieve 5,761,455 assert= ; MAIN: sieve-benchmark