0

我正在尝试在 Scala 中定义一个函数来确定一个数字是否为素数,如下所示:

def isPrime(n: Int): Boolean = {
   if (n == 2) true
   else {
      List(3 to math.sqrt(n)).foldLeft(isFactor(),0)
   }
   def isFactor(x:Int, n:Int):Boolean=(n%x)==0
}

鉴于我已经定义了 isFactor,给 foldLeft 调用提供什么参数?

4

2 回答 2

2

我猜你想知道列表中的任何项目是否是 n 的因子。所以对于一个空列表,你应该从 false 开始,因为一个空列表不包含 n 的因子。但是,您必须不断将收集到的结果与 isFactor 结果进行比较。最简单的当然是检查 list.exists(...) 方法。

于 2012-12-29T13:45:17.607 回答
0

感谢@thoredge 的建议,我已经能够使用 exists() 做到这一点,如下所示:

def isPrime(n: Int): Boolean = n match {
  case 2 => true
  case _ => !(2 to math.sqrt(n).ceil.toInt).exists((x) => n % x == 0)
}
于 2012-12-29T17:44:38.207 回答