我正在尝试在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
}
给我foldLeft调用的参数是什么,因为我已经定义了isFactor?
答案 0 :(得分:2)
我想你想找到列表中的任何项目是否为n的因子。因此,对于空列表,您应该以false开头,因为空列表不包含n的因子。但是,您必须将收集的结果与isFactor结果进行比较。最简单的当然是检查list.exists(...) - 方法。
答案 1 :(得分: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)
}