clojure.primes/primes.clj
François Pelletier c8fcac1370 creation of file primes.clj
This is a reimplementation with few minor corrections from clojure.contrib.lazy-seqs function  primes.

From defvar to def, with description as second argument
2014-07-27 12:08:17 -04:00

15 lines
421 B
Clojure

(def primes
"Lazy sequence of all the prime numbers."
(concat
[2 3 5 7]
(lazy-seq
(let [primes-from
(fn primes-from [n [f & r]]
(if (some #(zero? (rem n %))
(take-while #(<= (* % %) n) primes))
(recur (+ n f) r)
(lazy-seq (cons n (primes-from (+ n f) r)))))
wheel (cycle [2 4 2 4 6 2 6 4 2 4 6 6 2 6 4 2
6 4 6 8 4 2 4 2 4 8 6 4 6 2 4 6
2 6 6 4 2 4 6 2 6 4 2 4 2 10 2 10])]
(primes-from 11 wheel)))))