Scala speed-Finding Primes示例

1 testing performance primes scala

我正在用scala查看素数.我使用以下代码来检查数字n是否为素数.

(2 until n) forall(d=>n%d!=0)
Run Code Online (Sandbox Code Playgroud)

我检查了scala对素数的返回速度有多快179426549.

(2 until 179426549L.toInt) forall(d=>179426549L%d!=0)
res22: Boolean = true
Run Code Online (Sandbox Code Playgroud)

然后我尝试了一个更大的数字32416190071来看看为这个更大的素数返回真实需要多长时间.

(2 until 32416190071L.toInt) forall(d=>32416190071L%d!=0)
res23: Boolean = true
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,返回值为true会更快地返回更大的素数.为什么更大的数字更快地返回真实?

mik*_*kej 6

较大的数字32416190071 溢出可存储在整数中的最大正值,并变为负数-1943548297.范围(2 until -1943548297)为空,因此forall立即返回true.