前言
B S G S BSGS BSGS算法,全称 B a b y S t e p G i a n t S t e p Baby\ Step\ Giant\ Step Baby Step Giant Step,即大小步算法。某些奆佬也称其为拔(Ba)山(Shan)盖(Gai)世(Shi)算法。
它的主要作用是求解形式如 x t ≡ y ( m o d M O D ) x^t\equiv y(mod\ MOD) xt≡y(mod MOD)的式子中 t t t的值。
而且,它是一个简单易懂的算法(毕竟连我这样的数学渣渣都能理解)。
一个简单的性质
首先,我们需要知道一个简单的性质。
由费马小定理可得, x M O D − 1 ≡ 1 ( m o d M O D ) x^{MOD-1}\equiv1(mod\ MOD) xMOD−1≡1(mod MOD)。
L i n k Link Link
费马小定理详见博客筛素数方法(二)—— 费马小定理及MR素数判断
因此,当 t ≥ M O D − 1 t\ge MOD-1 t