【学习笔记】离散对数和剩余
离散对数#
给定 ,求解:
BSGS#
当 时, 在模 意义下有逆元,因此可以将 视作 ,其中 ,经过移项等价于:
用 unordered_map
存等式右边的答案,这样从大到小枚举 即可找出最小自然数解。时间复杂度 。注意 的情况需要特判。
exBSGS#
当 时,考虑 ,那么等式同除 应当解不变,所以有解必要条件是 。
记 ,那么方程变成:
对 求逆元移项,因为 不一定是质数,所以要用扩展欧几里得求逆元,变成:
而 未必为 ,需要递归处理子问题直到可以用 BSGS 求解,答案只需要再加上递归轮数。
在过程中需要考虑 以及 的情况。
递归过程每次至少除去 的一个质因子,因此时间复杂度 。
阶与原根#
称所有与 互质的数构成模 的简化剩余系,则剩余系的元素构成了模 的乘法循环群。
阶#
定义 在模 意义下的阶 为时 的最小正整数解。发现阶存在的充要条件是 。
阶的一个显然的性质: 的充要条件是 。充分性显然,必要性即取 是更小的指数。
阶的一个比较重要的性质:。第二个等号是显然的,只证明第一个等号。发现 ,因此 ,且 是满足条件的最小值,即 。
原根#
若 且 ,则称 是 的原根。这说明 的 次恰好取遍模 简化剩余系的所有数。因此涉及乘方的问题都可以转成原根的若干次幂,从而忽略底数只考虑指数相等,化简了问题。
原根判定定理#
是 的原根当且仅当对于 的所有质因子 ,。必要性显然,充分性可以由阶的性质得到,因为若 不是原根则必定有 ,其中 是某个 的质因子。
与此同时,数学家证明出最小原根的级别在 ,因此可以 求出最小的原根,复杂度完全可以接受。
原根存在定理#
不是所有的数 都有原根,实际只有 才有原根,其中 是任意奇素数。证明略。
原根个数#
由于其他原根都被表示成某个原根 的幂,所以若 ,则 也是原根。
根据阶的性质:,因此所有与 互质的 都对应一个原根,有 个原根。
剩余#
给定 ,求解:
存在解 ,则称 是 的 次剩余,否则称 是 的 次非剩余。
这篇博客只介绍用原根求解奇素数高次剩余以及奇素数二次剩余。
利用原根求解#
若 是奇素数,有原根 ,可以将方程写成:
这样转成了离散对数问题,容易 BSGS 求解。
另一个做法是将 也转成 之后解 ,当然转的过程中也需要 BSGS 找到 。
同时可以求出所有解,解出 后容易得到:
要求 ,于是 ,直接枚举 的倍数即可。
注意要求 是奇素数而不是上面原根存在定理中的所有存在原根的数。原因是 能被原根表示就一定要在简化剩余系中,也就是与 互质,而 作为未知数,就只能 是奇素数了。
劣势是单次 的复杂度过高。
二次剩余#
给定 ,其中 是奇素数,求解:
欧拉判别法和勒让德符号#
先忽略 的情况,那么 。取 原根 ,记 ,应当有 ,所以 ,而 是偶数,那么有解的充要条件是 。
所以对于每个二次剩余 ,应当存在两个根互为相反数,因此 中一对相反数可以得到一个二次剩余,故 的二次剩余与非二次剩余各有 个。
欧拉判别法:
这里证明可以先利用费马小定理:
于是 与 或 中的一个数同余。同时 ,若 是二次剩余则 ,从而 。而在其他情况下只能与 同余。
勒让德符号:
所以欧拉判别法的结果和勒让德符号相等。
Cipolla 算法#
Cipolla 算法具有使用的模意义下的复数扩域,具有魔法般的构造。
取一个非二次剩余 ,记 ,将数域扩充至 ,此时的复数乘法是:。注意此时 未必是 。
Cipolla 算法需要找到一个正整数 使得 ,即 是非二次剩余,断言此时 就是其中一个根。
证明需要两个引理:
-
,可以直接由 得来。
-
,这个是老生常谈了,卢卡斯定理的证明也用到了这个引理,直接二项式展开即可,即便是扩域也可以在取模。
于是可以推导:
那么现在只需要找这个 了,做法是直接 内随机,因为二次剩余和非二次剩余数量相当,所以期望意义下只需要 次左右。时间复杂度 。
参考资料#
离散对数#
- OI Wiki
阶与原根#
剩余#
-
OI Wiki
作者:SoyTony
出处:https://www.cnblogs.com/SoyTony/p/17987476/Learning_Notes_about_Discrete_Logarithm_and_Residue
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效