找到最小的正整数
使得
在
中的阶数至少是
。一路试除到
。对于所有的
,验证下面的多项式同余式:
。如果都通过则
是素数。
它的理论价值在于:这是第一个确定性的,对所有整数有效的不依赖于其它猜想的多项式时间算法。跟上文中的几个算法作对比:
方法需要用到
的特殊形式。APR-CL算法的时间复杂度不是多项式。Rabin-Miller方法依赖于GRH的成立。ECPP方法满足上面提到的别的条件,但是涉及到“随机选取椭圆曲线”的过程,所以不是确定性的。
然而………………………………这个理论上很美的算法实际中并没有什么卵用。实机测试显示,对于
左右的正整数
,APR-CL和ECPP都是秒出结果,而AKS的运行时间已经要以天计了。
最后总结一下如果要判断的正整数
很小(int32),直接试除就好。如果
稍微大一点
,用7次Rabin-Miller。
再大一些的时候,首先用试除和Baillie-PSW做一个初步测试。如果通过了初步测试,再用以下的方法来证明
是素数:如果
很容易做因子分解,用相应的
方法。