(import (goof)) (define (erathostenes n) (define vec (make-vector n #t)) (loop ((:for i (up-from 2 (:to n))) (:when (vector-ref vec i)) (:acc lst (listing i)) (:for j (up-from (* 3 i) (:to n) (:by (* i 2))))) => lst (vector-set! vec j #f))) (define (erathostenes2 n) (define vec (make-vector n #t)) (loop/list ((:for i (up-from 2 (:to n))) (:when (vector-ref vec i))) ;; Here we set all multiples of i to #f (loop ((:for j (up-from (* 3 i) (:to n) (:by (* i 2))))) (vector-set! vec j #f)) i))