跳到主要内容

离散对数

参考资料

简介

axb(modp)a^x\equiv b\pmod p 的最小非负整数 xx 称为 离散对数 问题。当 gcd(a,p)=1\gcd(a,p)=1 时,用 BSGS(Baby-Step Giant-Step,大步小步)求解。

m=pm=\lceil\sqrt p\rceil,令 x=imjx=im-j0i,j<m0\le i,j<m),则方程化为 aimbaj(modp)a^{im}\equiv b\cdot a^{j}\pmod p。先枚举 jjbajb\cdot a^j 存入哈希表(小步),再枚举 ii 计算 aima^{im} 查表(大步),时间复杂度 O(p)O(\sqrt p)。当 gcd(a,p)1\gcd(a,p)\ne 1 时用扩展 BSGS。

例题

给定质数 pp 与整数 b,nb,n,求最小的非负整数 ll,使 bln(modp)b^l\equiv n\pmod p;无解则报告。