先上题目
再上代码
(defn report-prime[]
(time (println "***")
)
)
(defn prime? [n] (= n (smallest-divisor n)))
(defn start-prime-test [n]
(if (prime? n)
(report-prime)
)
)
(defn timed-prime-test [n]
(println)
(println n)
(start-prime-test n)
)
(defn search-for-primes [start counts]
(cond (even? start) (search-for-primes (+ start 1) counts)
(< counts 0) "end"
(prime? start) (or (timed-prime-test start) (search-for-primes (+ start 2) (- counts 1)))
:else (search-for-primes (+ start 2) counts)
)
)
其中使用到的smallest-deivsior使用的是上一题的代码
再来看执行结果
1,000