在斯卡拉的forall里面的println

时间:2016-07-26 12:24:10

标签: scala

我在Scala中有这个功能,检查参数是否为素数。如何仅打印" d"的第一个值?函数isPrime可以除以" n",de"(d => n%d!= 0)"?我想要显示" d"的第一个值。那说" n"不是素数。

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))
  }
}

2 个答案:

答案 0 :(得分:2)

这样的事情可能是:

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
}

答案 1 :(得分:1)

这个怎么样?如果数字不是素数,你可以反转问题。

SELRA15_00001

因此,您可以轻松检查Option [Int]是否为true / false。 否定答案"无"意味着它是一个素数。积极的回答"一些"意味着它不是素数。

def notPrime(n: Int) = (2 until n) find (d => n % d == 0)