我想使用集合函数查找素数。我生成从1到10000的数字然后我决定从2开始取第一个数字,让它命名为X并将其替换为-1或删除其中X%Y === 0 Y是X之后的任何数字。 / p>
代码:
val list = (2 to 10000)
println(list.map(x => list.filter(y => y % x == 0)))
但是这段代码错了,难看,有如此糟糕的表现我怎样才能真正实现功能呢?
答案 0 :(得分:1)
我用这个解决了同样的任务:
import scala.annotation.tailrec
def primesBelow(x: Int): List[Int] = {
@tailrec
def iter(primes: List[Int], xs: List[Int]): List[Int] = xs match {
case Nil => primes
case x :: xs => iter(x :: primes, xs.filter(_ % x != 0))
}
iter(Nil, (2 until x).toList).reverse
}