这是一个 Project Euler 问题。
我从最快的方法中学到了列出 N 以下的所有素数 并实现了一个 clojure :
(defn get-primes [n]
(loop [numbers (set (range 2 n))
primes []]
(let [item (first numbers)]
(cond
(empty? numbers)
primes
:else
(recur (clojure.set/difference numbers (set (range item n item)))
(conj primes item))))))
使用如下:
(reduce + (get-primes 2000000))
但是太慢了。。
我想知道为什么,有人可以启发我吗?