阶与原根 学习笔记

阶与原根

前言

既然都学 OI 了,还要证明干嘛。

定义:满足 an1(modp) 的最小的正整数 n 称作 a 在模 p 意义下的阶,记作 ordp(a)

性质1:对于 1iordp(a)ai 不同余。

性质2:对于 an1(modp)ordp(a)n

性质3:如果 anam(modp),则 nm(modordp(a))

性质4:若 gcd(a,m)=gcd(b,m)=1,则当且仅当 gcd(ordm(a),ordm(b))=1 时,ordm(a×b)=ordm(a)×ordm(b)

性质5:若 gcd(a,m)=1,则 ordm(ak)=ordm(a)gcd(ordm(a),k)

性质6:对于质数 pordp(x)=φ(p)gcd(φ(p),x)

原根

定义:对于 1g<m,若 gcd(g,m)=1ordm(g)=φ(m),则 gm 的原根。原根可能有多个。

性质:当 m 为质数时,gimodm(0<i<m) 互不相同。

原根个数:若 m 有原根,m 的原根个数为 φ(φ(m))

原根存在:原根存在,当且仅当 m=2,4,pk,2pk,其中 p 为奇质数。

原根判定:对于 gcd(g,m)=1,若 gm 的原根,当且仅当对于 φ(m) 的每个素因子 p,都有 gφ(m)p1(modm)

原根范围:素数的最小原根为 O(m0.25)

求最小原根:由于最小原根的范围,我们可以从小到大枚举每个数暴力地判断是否为原根,复杂度 O(m)

应用

可以把乘法通过原根转化为指数上的加法。

习题

P6091 [模板] 原根

题意:求一个数的所有原根。

题解

我们找到一个原根 g,那么对于所有 gcd(x,φ(m))=1xgxmodm 是原根。

AT abc212_g

求有多少整数对 (x,y) 满足存在一个正整数 n 使得 xny(modP),给定质数 PP1012

题解

根据质数的原根的性质,我们找到 P 的原根 g,则 x,y 可以表示成 ga,gb,那么

a=1P1b=1P1[\existn,gangb(modP)]

根据欧拉定理,

a=1P1b=1P1[\existn,anb(modP1)]

那么根据同余方程的性质,

a=1P1b=1P1[gcd(a,P1)b]

枚举 gcd 的值,

d=1P1P1dd|aP1[gcd(a,P1)=d]

右边的和式当且仅当 d(P1) 时不为 0

d=1P1P1d[d(P1)]a=1(P1)/d[gcd(a,P1d)=1]

右边是 φ 的定义,

d=1P1P1d[d(P1)]φ(P1d)

dP1 的因数时有值,

dP1P1P1dφ(P1d)

因数取遍,则

dP1d×φ(d)

直接算为 O(d(P1)P1)

posted @   dengchengyu  阅读(55)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示