我们以 N=4 为例。
ll Pollard_Rho(ll N) {
ll c = rand() % (N - 1) + 1;
ll t = f(0, c, N);
ll r = f(f(0, c, N), c, N);
while (t != r) {
ll d = gcd(abs(t - r), N);
if (d > 1) return d;
t = f(t, c, N);
r = f(f(r, c, N), c, N);
}
return N;
}
如果 c=1,那么我们的 x:
0→1→2→1→2→…
∣t−r∣ 一定是 0 或 1
如果 c=2,那么我们的 x:
0→2→2→2→2→…
∣t−r∣ 一定是 2−2=0
如果 c=3,那么我们的 x:
0→3→0→3→0→…
∣t−r∣ 一定是 0 或 3
所以我们跑多少次都跑不出结果,陷入死循环。
如果我理解有误,请指出,谢谢。