请教pollard算法的时间复杂度分析问题
mstlq 2007-03-30 01:03:12 求取整数因子的pollard算法
input 整数n
output 整数n的一个因子(随机)
int pollard(int n)
{
int i,j,k,x,y,d =0;
random_seed(0);
i=1;
k=2;
x=random(1,n);
y=x;
while(i<n)
{
i++;
x=(x*x-1)%n;
d=euclid(n,y-x);//求两者最大公约数
if((d>1)&&(d<n)) //如果d是n的真因子
break;
else if (i==k){
y=x;
k*=2;
}
}
return d;
}
书上说,“执行算法的whlie循环的循环体根号d次后,就可以得到n的一个因子d”。请问这个说法的依据什么?小弟数论没学好,理解不了,惭愧……
哪位大哥愿意帮忙解释一下,分不够的话可以再加,谢谢!
}