Scala: エラトステネスのふるい
Stream の使いどころが少しずつ分かってきた。
エラトステネスのふるいがこんな簡潔に書けるのは衝撃的。
- コード
def from(n: Int): Stream[Int] = n #:: from(n + 1) // 整数の Stream を作る def sieve(s: Stream[Int]): Stream[Int] = s.head #:: sieve(s.tail.filter(_ % s.head != 0)) sieve(from(2)).take(20).print
- 出力
2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, empty
0 件のコメント:
コメントを投稿