racket/collects/tests/mzscheme/benchmarks/shootout/sieve.ss
2006-07-27 19:32:22 +00:00

26 lines
654 B
Scheme

(module sieve mzscheme
(define (main args)
(let ((n (if (= (vector-length args) 0)
1
(string->number (vector-ref args 0))))
(count 0)
(flags (make-vector 8192)))
(let loop ((iter n))
(if (> iter 0)
(begin
(do ((i 0 (+ i 1))) ((>= i 8192)) (vector-set! flags i #t))
(set! count 0)
(do ((i 2 (+ 1 i)))
((>= i 8192))
(if (vector-ref flags i)
(begin
(do ((k (+ i i) (+ k i)))
((>= k 8192))
(vector-set! flags k #f))
(set! count (+ 1 count)))))
(loop (- iter 1)))))
(display "Count: ") (display count) (newline)))
(main (current-command-line-arguments)))