benchmark.sieve: calculating the number of primes in [1,100,000,000].

db4
John Benediktsson 2015-06-07 11:30:04 -07:00
parent d60d098c11
commit 78685042a4
1 changed files with 22 additions and 0 deletions

View File

@ -0,0 +1,22 @@
USING: bit-arrays kernel locals math math.functions math.ranges
sequences ;
IN: benchmark.sieve
:: sieve ( n -- #primes )
n dup odd? [ 1 + ] when 2/ <bit-array> :> sieve
t 0 sieve set-nth
3 n sqrt 2 <range> [| i |
i 2/ sieve nth [
i sq n i 2 * <range> [| 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