如何用原根做求幂
定义:
\(a\) 模 \(n\) 的阶 \(\delta_n(a)\) 定义为:
\[\delta_n(a)=\underset d{\operatorname{arg }\min}\;a^d\equiv 1\pmod n \]若 \(\delta_n(a)=\varphi(n)\),则称 \(a\) 是 \(n\) 的原根 .
引理:
Lemma 1(原根存在定理)
一个数 \(n\) 存在原根当且仅当 \(n=2,4,p^{\alpha},2p^{\alpha}\),其中 \(p\) 为奇素数,\(\alpha\) 为正整数 .
Lemma 2
若 \(g\) 是 \(n\) 的原根,则 \(g,g^2,\cdots,g^{\varphi(n)-1}\) 构成 \(n\) 的一个既约剩余系 .
证明略去 .
如果我们要算一堆东西乘起来,模一个素数 \(P\) .
Lemma 1 表明,\(P\) 一定存在原根,不妨令原根为 \(g\) .
于是根据 Lemma 2,我们就可以把 \(1\dots P-1\) 中每个数都用 \(g\) 的 \(0\dots P-2\) 次幂表示 .
于是相乘就变成了指数相加,我们就把乘变成了加 .
在某些问题中有用,遇到再写吧 .
求原根大家都应该会吧,,
以下是博客签名,正文无关
本文来自博客园,作者:Jijidawang,转载请注明原文链接:https://www.cnblogs.com/CDOI-24374/p/16503751.html
版权声明:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议(CC BY-NC-SA 4.0)进行许可。看完如果觉得有用请点个赞吧 QwQ