【发布时间】:2010-11-16 04:37:31
【问题描述】:
我应该使用
(apply + (filter prime? (range 1 20)))
或
(reduce + (filter prime? (range 1 20)))
编辑:这是优化工具包中 clojure 中素数的来源。
(defn prime? [n]
(cond
(or (= n 2) (= n 3)) true
(or (divisible? n 2) (< n 2)) false
:else
(let [sqrt-n (Math/sqrt n)]
(loop [i 3]
(cond
(divisible? n i) false
(< sqrt-n i) true
:else (recur (+ i 2)))))))
【问题讨论】:
-
Clojure: reduce vs. apply 的可能副本。链接的问题比这个问题要新,但它有 IMO 更好的答案,所以我提名它为幸存者。