【世界数学难题】素数判定与大数因子分解问题(下)
6.一种概率算法 缪内的结果虽然很好,但它毕竟是依赖于一个悬而未决的假设.因而在实用中,它是不能被采用的.故我们回到勒默的结果,看看从这个结果还能引伸出什么方法来. 勒默的结果说,若n是合数,则存在a,满足(a,n)=1使样的a至少有多少. n是合数时,由勒默的结果定理2.12,Mn是Un的真子群,即Mn≠Un,因而Mn在Un中的指标至少是2,即(Un∶Mn)≥2.故Mn中的元素个数至多是Un中元素个数的一半,即Un中不在Mn中的元素个数至少 (modn). 证明 对1到n之间的数a,若(a,n)≠1,则显然a不满足 这个推论可以产生一种作“素性判别”的概率算法: 对任何输入n,从1到n之间随机地抽取k个数a1,a2,…,ak 是否成立,若有某个ai使此同余式不成立,则断言n是合数;若对a1,…,ak,同余式都成立,则断言n是素数. 在这个算法中,ai的选取是随机的,而且结论(断言)正确性不是完全确定的,故此算法叫概率算法.在这个概率算法中,当得到断言说输入n是合数时,由定理2.11,结论是正确的;当得到断言说输入是素数时,没有什么定理可以确保结论是正确的.也就是说,此算法在执行完毕后,可能将一个事实上是合数的输入断言为是素数了.但是,由以上定理2.15的推论,这种出错的概率是很小的.因为,若n事实上是合 乎为零(但不是零!)