如何用原根做求幂

定义:

\(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\) 次幂表示 .

于是相乘就变成了指数相加,我们就把乘变成了加 .

在某些问题中有用,遇到再写吧 .

求原根大家都应该会吧,,

posted @ 2022-07-21 21:57  Jijidawang  阅读(107)  评论(2编辑  收藏  举报
😅​