阶(multiplicative order)

\(\textbf{Def.}\):\(\delta_m(a)\) 为最小的 \(n\) 使得 \(a^n\equiv 1\pmod m\),其中 \((a,m)=1\)。

Observation 1:\(\boxed{a^0\not\equiv a^1\not\equiv\dots\not\equiv a^{\delta_m(a)-1}\pmod m}\)。

\(\textbf{Proof}\):若 \(\exists i,j,s.t.0\leqslant i<j<\delta_m(a),a^i\equiv a^j\pmod m\),则 \(a^{i-j}\equiv 1\pmod m\),又 \(i-j<\delta_m(a)\),矛盾。

\(\blacksquare\)

Observation 2:\(\boxed{\delta_m(a)\mid\varphi(m)}\)。

\(\textbf{Proof}\):由欧拉定理: \(a^{\varphi(m)}\equiv 1\pmod m\),因为 \(1^x=1\),所以如果存在 \(x_0\) 使得 \(a^{x_0}\equiv 1\pmod m\),那么 \(x_0\) 倍数也一定可以,也就是说存在周期性,所以 \(\delta_m(a)\mid\varphi(m)\)。BTW,同时也有若 \(a^n\equiv 1\pmod m\),则 \(\delta_m(a)\mid n\)。

\(\blacksquare\)

顺便可以知道若 \(a^p\equiv a^q\pmod m\),则 \(p\equiv q\pmod{\delta_m(a)}\)。

Lemma 1:设 \(m\in\mathbb{N}^*\),\(a,b\in\mathbb{Z}\),\((a,m)=(b,m)=1\),则 \(\boxed{\delta_m(ab)=\delta_m(a)\delta_m(b)}\) 的重要条件是 \((\delta_m(a),\delta_m(b))=1\)。

\(\textbf{Proof}\):略,具体见此处。

Lemma 2:设 \(k\in\mathbb{N}\),\(m\in\mathbb{N}^*\),\(a\in\mathbb{Z}\),\((a,m)=1\),则 \(\boxed{\delta_m(a^k)=\frac{\delta_m(a)}{(\delta_m(a),k)}}\)。

\(\textbf{Proof}\):略,具体见此处。

原根(primitive root)

\(\textbf{Def.}\):对于 \((a,m)=1\),若 \(\delta_m(a)=\varphi(m)\),则称 \(a\) 是模 \(m\) 的原根。

Lemma 1(判定定理):设 \(m\geqslant3\),\((a,m)=1\),则 \(a\) 为模 \(m\) 的原根当且仅当 \(\boxed{\forall p\in\mathbb{P},p\mid\varphi(m),a^{\frac{\varphi(m)}{p}}\not\equiv1\pmod m}\)。

\(\textbf{Proof}\):必要性显然,充分性证明见此处。

Lemma 2(数量定理):若 \(m\) 存在原根,则其原根数量为 \(\boxed{\varphi(\varphi(m))}\)。

\(\textbf{Proof}\):略,具体见此处。

Lemma 3(存在定理):\(m\) 存在原根当且仅当 \(\boxed{m=2,4,p^\alpha,2p^\alpha}\),其中 \(p\) 为奇素数,\(a\in\mathbb{N}^*\)。

\(\textbf{Proof}\):略,具体见此处。

若 \(m\) 存在原根,则最小原根 \(\leqslant m^\frac{1}{4}\)。

「note」原根照抄的更多相关文章

  1. 「NOTE」常系数齐次线性递推

    要不是考到了,我还没发现这玩意我不是很会-- # 前置 多项式取模: 矩阵快速幂. # 常系数齐次线性递推 描述的是这么一个问题,给定数列 \(c_1,c_2,\dots,c_k\) 以及数列 \(f ...

  2. Note -「多项式」基础模板(FFT/NTT/多模 NTT)光速入门

      进阶篇戳这里. 目录 何为「多项式」 基本概念 系数表示法 & 点值表示法 傅里叶(Fourier)变换 概述 前置知识 - 复数 单位根 快速傅里叶正变换(FFT) 快速傅里叶逆变换(I ...

  3. 「2014-5-31」Z-Stack - Modification of Zigbee Device Object for better network access management

    写一份赏心悦目的工程文档,是很困难的事情.若想写得完善,不仅得用对工具(use the right tools),注重文笔,还得投入大把时间,真心是一件难度颇高的事情.但,若是真写好了,也是善莫大焉: ...

  4. 「USACO16OPEN」「LuoguP3147」262144(区间dp

    P3147 [USACO16OPEN]262144 题目描述 Bessie likes downloading games to play on her cell phone, even though ...

  5. Python文字转换语音,让你的文字会「说话」,抠脚大汉秒变撒娇萌妹

    作者 | pk 哥 来源公众号 | Python知识圈(ID:PythonCircle) APP 也有文字转换为语音的功能,虽然听起来很别扭,但是基本能解决长辈们看不清文字或者眼睛疲劳,通过文字转换为 ...

  6. Ubuntu「一键」设置全局代理

    Ubuntu「一键」设置代理 sonictl note: the DNS problem may be still there. Except proxychains. WSL (Windows Su ...

  7. 「数据结构」Link-Cut Tree(LCT)

    #1.0 简述 #1.1 动态树问题 维护一个森林,支持删除某条边,加入某条边,并保证加边.删边之后仍然是森林.我们需要维护这个森林的一些信息. 一般的操作有两点连通性,两点路径权值和等等. #1.2 ...

  8. 「译」JUnit 5 系列:条件测试

    原文地址:http://blog.codefx.org/libraries/junit-5-conditions/ 原文日期:08, May, 2016 译文首发:Linesh 的博客:「译」JUni ...

  9. 「译」JUnit 5 系列:扩展模型(Extension Model)

    原文地址:http://blog.codefx.org/design/architecture/junit-5-extension-model/ 原文日期:11, Apr, 2016 译文首发:Lin ...

  10. JavaScript OOP 之「创建对象」

    工厂模式 工厂模式是软件工程领域一种广为人知的设计模式,这种模式抽象了创建具体对象的过程.工厂模式虽然解决了创建多个相似对象的问题,但却没有解决对象识别的问题. function createPers ...

随机推荐

  1. K8S 证书详解(认证)

    K8S 证书介绍 在 Kube-apiserver 中提供了很多认证方式,其中最常用的就是 TLS 认证,当然也有 BootstrapToken,BasicAuth 认证等,只要有一个认证通过,那么 ...

  2. 用 Python + turtle 模块绘制五星红旗

    用 Python 绘制五星红旗 在这个代码示例中,我将介绍如何使用 Python 的 turtle 模块绘制五星红旗.turtle 模块是一个图形库,可以轻松地在 Python 中实现简单的绘图功能. ...

  3. Nginx SSL 双向认证

    安装Nginx和OpenSSL yum install nginx openssl -y SSL 服务器 / 客户端双向验证证书的生成 创建一个新的 CA 根证书,在 nginx 安装目录下新建 ca ...

  4. 多个视频文件合成画中画效果(Python、ffmpeg)

    Step 1 从视频中分离出音频(MP4->mp3) def separateMp4ToMp3(tmp): mp4 = tmp.replace('.tmp', '.mp4') print('-- ...

  5. TortoiseGit使用Cherry Pick遇到的问题及解决方案

    TortoiseGit的Cherry Pick 比如从master pick某一个commit 记录到其它分支(release) pick的操作方法:切到分支,点击 show log,然后在log d ...

  6. 4.5 x64dbg 探索钩子劫持技术

    钩子劫持技术是计算机编程中的一种技术,它们可以让开发者拦截系统函数或应用程序函数的调用,并在函数调用前或调用后执行自定义代码,钩子劫持技术通常用于病毒和恶意软件,也可以让开发者扩展或修改系统函数的功能 ...

  7. BUUCTF-MISC-九连环(steghide隐写+伪加密)

    开局一张图 丢入winhex里,尾部有其他文件名 kali中binwalk -e x.jpg 得到的zip中 图片打不开 丢入winhex,发现jpg处是伪加密 修改之后,解压可打开图片,另一个压缩包 ...

  8. 【go语言】2.4.1 如何导入和使用包

    在 Go 语言中,包(package)是代码的组织方式.每个 Go 程序都由包构成,程序从 main 包开始运行. 导入包 使用 import 关键字可以导入包.导入的包可以是 Go 标准库中的包,也 ...

  9. 黑马2023最新版Java学习路线和资料地址

    地址:https://pan.baidu.com/s/1LxIxcHDO7SYB96SE-GZfuQ 提取码:dor4

  10. VUE3、ElementPlus 重构若依vue2 表单构建功能

    Vue3 + ElementPlus + Vite 重构 若依Vue2 表单构建功能 若依官方的Vue3 版本发布已经有段时间了,就是这个表单构建功能一直没有安排计划去适配到Vue3! 前段时间公司需 ...