我有一個無限素數流primeStream
(從2開始並且增加)。我還有另外一個Ints s
流量增加的幅度,我想測試它們中的每一個是否爲質數。測試一個有序的無限流是否包含一個值
什麼是有效的方法來做到這一點?我可以定義
def isPrime(n: Int) = n == primeStream.dropWhile(_ < n).head
但由於它需要整個流每次迭代,這似乎效率不高。的primeStream
實施(從其他地方複製無恥):
val primeStream: Stream[Int] =
2 #:: primeStream.map{ i =>
Stream.from(i + 1)
.find{ j =>
primeStream.takeWhile{ k => k * k <= j }
.forall{ j % _ > 0 }
}.get
}
好的創意 - 這肯定會與此特定問題的幫助。我想知道是否更普遍地有搜索無限增長流的好方法。 –