对于一个数n,如果想要判断它是否为素数,常规的方法为试除法。即,让n依次除以到sqrt(n)以内的整数。如果有出现除尽的情况,则为合数。
该方法的时间复杂度为o(sqrt(n))在面对n为长整型的时候有可能出时间要求。因此普遍采用米勒拉宾算法进行素性判定。
在此之前介绍一种伪素数判定方法——小费马定理。
但没有米勒拉宾素性测试快。
米勒拉宾素性测试是:
判断一个数p是否为素数
p先得为大于等于的正整数才有可能为素数,
先判奇偶,若为偶数只有为素数,
若为奇数(这里可以考虑去掉甚至的倍数),则先求出d。
对于每一个底a,让d不断乘以直到为p-,
在此过程中(包括原本的d与d=p-时的情况),
设t为a的d次方模p的余数,
()当t=-时跳出,声明p有可能为素数
()当t=时,若d为奇数,跳出声明p有可能为素数,否则跳出声明p必为合数
()当d=p-时跳出,声明p必为合数。
喜欢数学心请大家收藏:dududu数学心小说网更新度全网最快。