♯エラトステネスの篩とは 一般にエラトステネスの篩(ふるい)というと求める素数の上限を決めてそれ以下の整数(2以上)から素数の倍数を消すことで素数を篩い出すアルゴリズムです。詳細はwikipediaに分かり易く書かかれていますのでそちらをどうぞ。 このエラトステネスの篩に上限をあたえず無限素数リスト作ってみようという試みです。 Clojure は遅延シーケンスにより無限長のリストを扱うことができます。無限素数リストをつくる例はWEB上でいくつも見られるのですが、エラトステネスの篩で書いているのは少ないのではないかと思います。 エラトステネスの篩といいつつも実は試し割りで素数を求めている例をちらほらと見掛けます。 剰余を求めるのは試し割りです。N 以下の素数で割ってみて余りが非ゼロのものを残す、というアルゴリズムはエラトステネスの篩ではないと思います。 ♯基本方針 基本方針としては、 2以上