查找素数高阶函数

时间:2014-01-26 15:28:42

标签: function scala functional-programming primes

我想使用集合函数查找素数。我生成从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)))

但是这段代码错了,难看,有如此糟糕的表现我怎样才能真正实现功能呢?

1 个答案:

答案 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
}