[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[ShootOut] sieve.bat



; @echo off
; mzscheme.exe -f sieve.bat -mvC %1
; goto :end

(define (main args)
  (let ((n (if (null? args)
               1
               (string->number (car args))))
	(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)))

; :end