关于pollard-rho算法的疑问
int pollard_rho(int n, int c)
{
int x, y, d, i = 1, k = 2;
x = rand() % (n - 1) + 1;
y = x;
while (true) {
++i;
x = (modular_multi(x, x, n) + c) % n;
d = gcd(y - x, n);
if (1 < d && d < n)
return d;
if (x == y)
return n;
if (i == k)
y = x, k <<= 1;
}
}
这段代码与算法导论上的伪代码大致相同,请问第8、9行是什么意思?怎么来的 pollard-rho
[解决办法]
调用API接口呗!
返回值分别赋值给x,y
[解决办法]
modular_multi(x,y,n) =(x*y %n)//* , %数学意义上的乘法,和求余,不是计算机上的.
gcd //数学意义上的最大公约数.