用于素性测试的朴素蒙特卡罗算法的成功概率

时间:2017-02-15 09:21:34

标签: algorithm probability montecarlo number-theory

考虑下面的天真蒙特卡罗算法,用于数字n的素性测试。

isPrimeMonteCarlo(n,t){
/*
 * Take an integer n as input and check wheather it is prime or not
 * using the naive monte carlo method.
 * If the number is prime return True else return False.
 * */
if(n<=1)
    return False
m = sqrt(n);
for i = 1 to t:
    j = random()%m+2
    if n%j==0:
        return False
return True
}

找到t的值,使算法以高概率产生正确的输出?

到目前为止,我能想出什么:

假设n是非素数,当输出n为素数时,算法将失败。当没有数字j给出n%j == 0时,会发生这种情况。 j选自[2,sqrt(n)+2]。 我们希望j使得j在任何t次迭代中都不会除n。

任何此类j必须是n的除数。 该问题减少到找到n的除数的数量,使得它们是&lt; = sqrt(n)+2。 我无法找到这个数字的界限。 任何帮助将不胜感激。

0 个答案:

没有答案