エラトステネスの篩を書いてみた
唐突に書きたくなったので、書いてみた。
(define (sieve n) (define (iter ls m) (if (not m) ls (iter (filter (^x (or (= m x) (not (zero? (mod x m))))) ls) (find (cut > <> m) ls)))) (iter (lrange 2 n) 2)) ;;test (sieve 100)
昔、自分が書いたものより汚くなった気がする。泣いた。。
唐突に書きたくなったので、書いてみた。
(define (sieve n) (define (iter ls m) (if (not m) ls (iter (filter (^x (or (= m x) (not (zero? (mod x m))))) ls) (find (cut > <> m) ls)))) (iter (lrange 2 n) 2)) ;;test (sieve 100)
昔、自分が書いたものより汚くなった気がする。泣いた。。