println在斯卡拉斯内拉
问题描述:
我有这个功能在斯卡拉检查,如果参数是一个素数。我怎样才能打印函数isPrime可以用“n”分隔的“d”的第一个值,在“de(d => n%d!= 0)”中?我想显示“d”的第一个值,即“n”不是素数。println在斯卡拉斯内拉
object Collection {
def isPrime(n: Int): Boolean = (2 until n) forall (d => n % d != 0)
def main(args: Array[String]): Unit = {
println("isPrime(7): " + isPrime(7))
println("isPrime(12): " + isPrime(12))
println("isPrime(127): " + isPrime(127))
println("isPrime(254): " + isPrime(254))
}
}
答
事情是这样的,也许:
def isPrime(n: Int): Boolean = (2 until n) forall { d =>
val remainder = n % d
if (remainder == 0) println("Not prime because of" + d)
remainder != 0
}
答
这个是什么?如果数字不是素数,则可以将问题反转。
def notPrime(n: Int) = (2 until n) find (d => n % d == 0)
因此,您将得到可轻松检查真/假的选项[Int]。 否定答案“无”意味着它是素数。正面回答“一些”意味着它不是素数。
notPrime(7): None
notPrime(12): Some(2)
notPrime(127): None
notPrime(254): Some(2)
@为编辑shivansh-塔瓦谢谢,我并没有太注意..的xD –
我正在同solution..but你是相当快的:P:d –
感谢,是的,我也做了这个修改。现在我意识到,在=>是一个函数之后......“ –