Scala speed-Finding Primes示例

时间:2017-08-27 15:40:41

标签: performance scala testing primes

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

(2 until n) forall(d=>n%d!=0)

我检查了scala对素数179426549返回true的速度。

(2 until 179426549L.toInt) forall(d=>179426549L%d!=0)
res22: Boolean = true

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

(2 until 32416190071L.toInt) forall(d=>32416190071L%d!=0)
res23: Boolean = true

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

1 个答案:

答案 0 :(得分:6)

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