10番目に到達です。
そしてまた素数の問題です。
前に作ったやつを使ったら、あっさりとオーバーフローしたので、やっぱり作りなおし。
こんどはatomを使って作ったデータを保存してみた。
これならかなりでかいのでも大丈夫でしょう。
13秒かかりました。
遅いのか? 速いのか?
そしてまた素数の問題です。
前に作ったやつを使ったら、あっさりとオーバーフローしたので、やっぱり作りなおし。
こんどはatomを使って作ったデータを保存してみた。
これならかなりでかいのでも大丈夫でしょう。
13秒かかりました。
遅いのか? 速いのか?
;;
;; Problem 10 : 2011/4/9
;; "Elapsed time: 13662.498447 msecs"
(def *prime-list* (atom []))
(defn is-prime? [target]
(loop [plist @*prime-list*]
(let [check-num (first plist)]
(cond (empty? plist) true
(> check-num (Math/sqrt target)) true
(zero? (rem target check-num)) false
true (recur (rest plist))))))
(defn create-prime-list-under [n]
(loop [target 2]
(if (>= target n)
true
(if (is-prime? target)
(do
(reset! *prime-list* (conj @*prime-list* target))
(recur (inc target)))
(recur (inc target))))))
(do
(reset! *prime-list* [])
(create-prime-list-under 2000000)
(reduce + @*prime-list*))
;;
0 コメント:
コメントを投稿