启发式 - N是素数吗?

时间:2012-12-12 07:02:42

标签: algorithm primes heuristics

我从标准输入读取了一个正整数N,我试图弄清楚N是否是素数。

我知道我可以将N除以所有正数达到sqrt(N),但这很费时,我的算法会不时给出误报,所以我正在寻找一种启发式方法来解决这个问题。 / p>

我记得去年我在拼贴画中学到了一个选择数字的算法,然后检查N是否可被该数字整除(或者它的因子),如果没有,那么它可以告诉N是素数,但它会错误地将它确定为大约1/40的时间。

有人认识到我正在谈论的算法吗? 链接到它会非常有帮助。

1 个答案:

答案 0 :(得分:4)

嗯,有一些概率算法,有些在wikipedia page中有描述,很可能你在谈论 Miller-Rabin Fermat Primality Test

请注意,自2002年以来,实际上有一个O(log(n)^ 6)确定性方法来确定一个数字是否为素数 - 称为AKS(在其开发者之后) 1 < / p>


这是一个有趣的问题 - 很多人认为素数测试不能在输入的大小(即n中的对数)中进行多项式确定,也不能确定性地进行,但是他们的方法也是如此。