朴素 Pollard Rho 的正确性好像有问题
查看原帖
朴素 Pollard Rho 的正确性好像有问题
891963
0xyz楼主2023/7/12 11:07

我们以 N=4N=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=1c=1,那么我们的 xx:

0→1→2→1→2→…0\to 1\to 2\to 1\to 2\to…

∣t−r∣|t-r| 一定是 00 或 11

如果 c=2c=2,那么我们的 xx:

0→2→2→2→2→…0\to 2\to 2\to 2\to 2\to…

∣t−r∣|t-r| 一定是 2−2=02-2=0

如果 c=3c=3,那么我们的 xx:

0→3→0→3→0→…0\to 3\to 0\to 3\to 0\to …

∣t−r∣|t-r| 一定是 00 或 33

所以我们跑多少次都跑不出结果,陷入死循环。

如果我理解有误,请指出,谢谢。

2023/7/12 11:07
加载中...