fork(1) download
  1. (defn primes []
  2. (let [sieve (fn sieve [dic n]
  3. (if-let [factors (dic n)]
  4. (recur (reduce #(update % (+ n %2) (fnil conj []) %2)
  5. (dissoc dic n) factors) (inc n))
  6. (lazy-seq (cons n (sieve (assoc dic (* n n) [n]) (inc n))))))]
  7. (sieve {} 2)))
  8.  
  9. (println (->> (primes) (drop 100000) first))
Success #stdin #stdout 2.88s 4386816KB
stdin
Standard input is empty
stdout
1299721