快速判定大型正整数质数与合数的方法

对于 100 以内的较小正整数,我们可以使用简单的法则进行质数判定:检验其是否被 2、3、5、7、11、13 整除。那么,如何快速判断较大整数是质数还是合数呢?

比如,判定 899 是质数还是合数?

逐一检验后,发现它不被 2、3、3、7、11、13、17、19 整除。至此,是否可以断定它是质数呢?显然不成立,继续检验,发现它可以被 29 整除。899 是合数。

质数判定遵循以下规律:

设待判定的整数为 N:

当 N < 2 × 3 时,若 N 不被 2 整除,则 N 是质数;

当 N < 3 × 5 时,若 N 不被 2 或 3 整除,则 N 是质数;

以此类推,当 N < a × b(a、b 为连续质数且 a < b)时,若 N 不被 2、3、5,… 或 a 等连续质数整除,则 N 是质数;

判定大型整数 N 是否为质数,方法如下:找到两个连续质数 a、b(a < b),使得 N 最接近 ab 且 N < ab,然后检验 N 是否被小于 a 的所有质数整除即可。

对于较大整数 N,找到满足 N < ab 的连续质数 a、b 比较困难。注意到 a < b 且 a、b 是连续质数,因此 a² < N < ab,即 a < √N < √ab。

可用 [√N]([√N] 表示不超过 √N 的最大整数)代替 a。

例如,判定 2011 是质数还是合数?

由于 [√2011] = 44,因此判定 2011 是否为质数,只需检验它是否被小于 44 的某个质数整除即可,而无需检验到 2011。

结果表明,2011 不被这些质数整除,因此 2011 是质数。