考虑下面的天真蒙特卡罗算法,用于数字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。 我无法找到这个数字的界限。 任何帮助将不胜感激。