これは、オブジェクトのisPrime
関数を表現する最もエレガントな方法ですか?BigInt
これが私が通常の整数のために持っているものです:
def isPrimeForInt(n: Int): Boolean = {
val ceiling = math.sqrt(n.toDouble).toInt
(2 until ceiling) forall (x => n % x != 0)
}
ここに私が BigInts のために持っているものがあります:
def isPrimeForBigInt(n: BigInt): Boolean = {
def ceiling: BigInt = {
def f(a: BigInt): Stream[BigInt] = a #:: f(a+1)
f(BigInt(1)).dropWhile(_.pow(2) < n)(0)
}
Range.BigInt(BigInt(2), ceiling , BigInt(1)) forall (x => n % x != 0)
}