2016-07-26 73 views
0

我有这个功能在斯卡拉检查,如果参数是一个素数。我怎样才能打印函数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)) 
    } 
} 

回答

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 
} 
+0

@为编辑shivansh-塔瓦谢谢,我并没有太注意..的xD –

+1

我正在同solution..but你是相当快的:P:d –

+0

感谢,是的,我也做了这个修改。现在我意识到,在=>是一个函数之后......“ –

1

这个是什么?如果数字不是素数,则可以将问题反转。

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)