首页 > 其他分享 >Shank's Baby-Step-Giant_Step Algorithm(BSGS)

Shank's Baby-Step-Giant_Step Algorithm(BSGS)

时间:2023-01-04 10:12:20浏览次数:30  
标签:Giant le Algorithm bmod Step im equiv

解模方程 (\(n\) 为素数)

\[a^x \equiv b (\bmod n) \]

因为欧拉定理 \(a^{\phi(n)} \equiv 1 (\bmod n)\) (\(n\) 为素数)。

\[ 0\le x \le n - 1 \]

设 \(m = \sqrt{n+0.5}\)。

暴力计算 \(a^i \bmod n (0 \le i \le m - 1)\) 的值,并放在 \(map\) 中。

对于\(a^i \bmod n (0 \le i \le n - 1)\),可以写为 \(a^{im + j} \bmod n(0 \le i , j \le m - 1)\) 。

当 \(i,j\) 取最大值时,有 \(m(m - 1) + (m-1) = (m + 1)(m - 1) = m^2 - 1 = n - 1\),恰好取到了 \(n - 1\) 。

\[ a^x \equiv a^{im + j} \equiv b (\bmod n) (0 \le i \le n - 1) \]

\[ a^j \equiv b \times a^{-im} (\bmod n) (0 \le i \le n - 1) \]

暴力枚举 \(i\), 并计算 \(b\times a^{-im}\) 的值。

在 \(map\) 中检查其值是否存在,若有则找到了最优解 \(x\), 否则继续枚举 \(i\)。

当 \(0 \le i \le n - 1\) 均没有找到解时,说明无解。

标签:Giant,le,Algorithm,bmod,Step,im,equiv
From: https://www.cnblogs.com/dadidididi/p/17024070.html

相关文章