【发布时间】:2012-12-27 00:26:35
【问题描述】:
处理示例lazy-seq here。
(defn sieve [s]
(cons (first s)
(lazy-seq (sieve (filter #(not= 0 (mod % (first s)))
(rest s))))))
如果我尝试生成超过几千个左右的素数,我会收到 OutOfMemoryError。根据我的研究(但我对clojure 很陌生),我怀疑这可能是“抓住头”类的问题,但无法弄清楚为什么会这样或如何补救。在生成大量素数时如何更改此函数以免内存不足?
【问题讨论】:
-
感谢您指出这一点,这回答了我的问题,我以为我已经充分搜索了,显然没有。
-
虽然,在解决之后,它似乎并没有真正解决我的问题。
-
有这个链接clj-me.cgrand.net/2009/07/30/… 有一个有效的惰性素数定义。
-
cgrand 代码很漂亮,谢谢指点。
标签: clojure