2016-07-26 74 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)