Scala で素数のリスト
Scalaでエラトステネスの篩を参考に Scala 2.10 向けにアレンジして書いてみた。しかし効率は良くないようで、10000 個くらいの素数を取得しようとするとあっという間に OutOfMemory になる。
object Prime { def primes: Stream[Int] = { def sieve(xs: Stream[Int]): Stream[Int] = xs.head #:: sieve(xs.tail.filter(_ % xs.head != 0)) sieve(Stream.from(2)) } def main(args: Array[String]): Unit = { primes.take(20).foreach { println } } }