2016-07-26 5 views
0

私はこのパラメータが素数であるかどうかをチェックするこの関数をScalaで持っています。 "d"の最初の値だけを印刷するにはどうすればいいですか?isPrimeが "n"で割り切れる関数、de "(d => n%d!= 0)"で分けることができますか?私は、 "n"が素数でないことを示す "d"の最初の値を示したいと思います。スカラの中で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

、私は多くの注意を払っていませんでした。.. xDさん –

+1

私は同じに取り組んでいたsolution..butあなたは非常に高速だった:P:はい、私もD –

+0

おかげで、この変更を行いました。今度は、=>が関数であることを理解しました。 –

1

何?数字が素数でない場合は、質問を逆にすることができます。

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

結果として、true/falseを簡単に確認できるオプション[Int]が表示されます。 否定的な答え「なし」は、それが素数であることを意味します。肯定的な答え「あるもの」はそれが素数でないことを意味する。編集用shivansh-Srivastava氏のおかげで@

notPrime(7): None 
notPrime(12): Some(2) 
notPrime(127): None 
notPrime(254): Some(2) 
関連する問題