0

次のように、数値が素数であるかどうかを判断する関数を Scala で定義しようとしています。

def isPrime(n: Int): Boolean = {
   if (n == 2) true
   else {
      List(3 to math.sqrt(n)).foldLeft(isFactor(),0)
   }
   def isFactor(x:Int, n:Int):Boolean=(n%x)==0
}

isFactor を定義済みの場合、foldLeft 呼び出しにどのような引数を与える必要がありますか?

4

2 に答える 2

2

リスト内の項目のいずれかが n の因数であるかどうかを調べたいと思います。したがって、空のリストには n の因数が含まれないため、空のリストの場合は false から開始する必要があります。ただし、収集した結果を isFactor の結果と比較し続ける必要があります。もちろん、最も簡単なのは list.exists(...) メソッドをチェックすることです。

于 2012-12-29T13:45:17.607 に答える
0

@thoredge からのアドバイスのおかげで、次のように exists() を使用してこれを行うことができました。

def isPrime(n: Int): Boolean = n match {
  case 2 => true
  case _ => !(2 to math.sqrt(n).ceil.toInt).exists((x) => n % x == 0)
}
于 2012-12-29T17:44:38.207 に答える