[学习笔记] 阶 & 原根 - 数论
较为冷门(?)的数论知识,但在解决一些特殊问题上有着重要的作用。
整数的阶
根据欧拉定理有正整数 \(n\) 和一个与 \(n\) 互素的整数 \(a\),那么有 $a^{\phi(n)} \equiv 1 \pmod{n} $。因此至少存在一个整数满足这个方程。并且由良序原理可得一定存在一个最小正整数满足这个方程。、
定义:设 \(a\) 和 \(n\) 是互素的整数,\(a\not = 0\),\(n > 0\),使得 \(a^x\equiv 1 \pmod n\) 的最小正整数称之为 **\(a\) 模 \(n\) 的阶 **,记作 \(\mathrm{ord}_na\)。
定理1
如果 \(a\) 和 \(n\) 为互素的整数,且 \(a\not = 0\)、\(n>0\),那么正整数 \(x\) 是同余方程 \(a^x\equiv 1 \pmod n\) 的一个解当且仅当 $ \mathrm{ord}_na \mid x$。
证明:
假设 \(a^x\equiv 1 \pmod n\),并将 \(x\) 表示为:
\[x=k\times \mathrm{ord}_na + r\ \ \ (0\le r< \mathrm{ord}_na)
\]得:
\[a^x=a^{k\times \mathrm{ord}_na + r}=(a^{k\times \mathrm{ord}_na})^r\equiv a^r\pmod n
\]因为 \(a^x\equiv 1 \pmod n\),所以 \(a^r\equiv 1 \pmod n\),又因为 \(\mathrm{ord}_na\) 为使得该同余方程右边为 \(1\) 的最小正整数,所以 \(r=0\),所以有 \(x=k\times \mathrm{ord}_na\),固有 $ \mathrm{ord}_na \mid x$。
推论1.1
如果 \(a\) 和 \(n\) 为互素的整数,且 \(n>0\),那么 \(\mathrm{ord}_na \mid \phi(n)\)。
根据定理1不难得证。
定理2
如果 \(a\) 和 \(n\) 为互素的整数,且 \(n>0\),那么 \(a^i\equiv a^j \pmod n\) 当且仅当 \(i \equiv j \pmod {\mathrm{ord}_na}\)。\(i\) 和 \(j\) 均为非负整数。
证明:
假设 \(a^i\equiv a^j \pmod n\) 且 \(j\le i\)。因为 \(a \equiv 1 \pmod {n}\),所以 \(a^j \equiv 1 \pmod n\)。那么可列出下面狮子:
\[a^i \equiv a^j \equiv a^ja^{i-j} \pmod n
\]约掉 \(a^j\) 则有:
\[a^{i-j} \equiv 1 \pmod n
\]由定理1可得 \(\mathrm{ord}_na \mid i-j\),换个形式:\(i \equiv j \pmod {\mathrm{ord}_na}\)。得证。
这条性质非常重要,换个说法就是当 \(a\) 的指数小于 \(\mathrm{ord}_na\) 的时候所有模后的数都是不相等的。接下来说明原根的性质时还会提到类似的这一点。这可以把某些程序的复杂度 \(\mathcal{O}(n)\) 压缩到 \(\mathcal{O}(\mathrm{ord}_na)\)。是一个很大的优化。
原根
定义:如果 \(r\) 和 \(n\) 是互素的整数且 \(n>0\),那么当 \(\mathrm{ord}_nr=\phi(n)\) 时,称 \(r\) 是 \(n\) 的原根。
某个整数的阶是一定存在的,但原根可不是什么整数都有的。考虑哪些正整数有原根。一个整数存在原根当且仅当他为 \(2,4,p^k,2p^k\),其中 \(p\) 为奇素数,\(k\) 为正整数。
定理3
如果正整数\(r\) 和 \(n\) 互素,并且 \(n>0\), 如果 \(r\) 是 \(n\) 的一个原根,那么下列整数
\]
构成了模 \(n\) 的既约剩余系。
没写完呢~
不太好理解。破译过来就是,这些整数模 \(n\) 的值在指数为 \(1\) 到 \(\phi(n)\) 的时候是互不相等的,并且这些整数模 \(n\) 的值只有这些,也就是取尽了整个值域。并且他们每 \(\phi(n)\) 个一循环。
[学习笔记] 阶 & 原根 - 数论的更多相关文章
- [学习笔记]NTT——快速数论变换
先要学会FFT[学习笔记]FFT——快速傅里叶变换 一.简介 FFT会爆精度.而且浮点数相乘常数比取模还大. 然后NTT横空出世了 虽然单位根是个好东西.但是,我们还有更好的东西 我们先选择一个模数, ...
- 数论算法 剩余系相关 学习笔记 (基础回顾,(ex)CRT,(ex)lucas,(ex)BSGS,原根与指标入门,高次剩余,Miller_Rabin+Pollard_Rho)
注:转载本文须标明出处. 原文链接https://www.cnblogs.com/zhouzhendong/p/Number-theory.html 数论算法 剩余系相关 学习笔记 (基础回顾,(ex ...
- JavaScript学习笔记(十)——高阶函数之map,reduce,filter,sort
在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意! 如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/ ...
- 五一DAY1数论学习笔记
by ruanxingzhi 整除性 如果a能把b除尽,也就是没有余数,则我们称a整除b,亦称b被a整除.(不是除以,是整除!!) 记作:\(a|b\) |这个竖杠就是整除符号 整除的性质 自反性 对 ...
- [学习笔记] 多项式与快速傅里叶变换(FFT)基础
引入 可能有不少OIer都知道FFT这个神奇的算法, 通过一系列玄学的变化就可以在 $O(nlog(n))$ 的总时间复杂度内计算出两个向量的卷积, 而代码量却非常小. 博主一年半前曾经因COGS的一 ...
- 快速傅里叶变换(FFT)学习笔记(其二)(NTT)
再探快速傅里叶变换(FFT)学习笔记(其二)(NTT) 目录 再探快速傅里叶变换(FFT)学习笔记(其二)(NTT) 写在前面 一些约定 前置知识 同余类和剩余系 欧拉定理 阶 原根 求原根 NTT ...
- OI数学 简单学习笔记
基本上只是整理了一下框架,具体的学习给出了个人认为比较好的博客的链接. PART1 数论部分 最大公约数 对于正整数x,y,最大的能同时整除它们的数称为最大公约数 常用的:\(lcm(x,y)=xy\ ...
- 「学习笔记」FFT 之优化——NTT
目录 「学习笔记」FFT 之优化--NTT 前言 引入 快速数论变换--NTT 一些引申问题及解决方法 三模数 NTT 拆系数 FFT (MTT) 「学习笔记」FFT 之优化--NTT 前言 \(NT ...
- 初等数论学习笔记 III:数论函数与筛法
初等数论学习笔记 I:同余相关. 初等数论学习笔记 II:分解质因数. 1. 数论函数 本篇笔记所有内容均与数论函数相关.因此充分了解各种数论函数的名称,定义,符号和性质是必要的. 1.1 相关定义 ...
- BZOJ 2120 数颜色&2453 维护队列 [带修改的莫队算法]【学习笔记】
2120: 数颜色 Time Limit: 6 Sec Memory Limit: 259 MBSubmit: 3665 Solved: 1422[Submit][Status][Discuss] ...
随机推荐
- python重拾第十一天-REDIS缓存数据库
缓存数据库介绍 NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL",泛指非关系型的数据库,随着互联网web2.0网站的兴起,传统的关系数据库在应付we ...
- FileZilia FATAL ERROR: Network error: Software caused connection abort
使用FileZilia sftp传文件,对象服务器突然关闭,导致FileZilia传输中断. 等待对象服务器打开后,使用FileZilia想继续传输文件,结果一直显示: FATAL ERROR: Ne ...
- Restful和WebService区别
简介 Restful是一种架构风格,其核心是面向资源,更简单: 而webService底层SOAP协议,主要核心是面向活动: 两个都是通过web请求调用接口 RESTful是什么 REST就是(REp ...
- Swift开发基础02-流程控制
if-slse let age = 4 if age >= 22 { print("Get married") } else if age >= 18 { print( ...
- jQuery中hide()和display的区别在于它们实现元素隐藏的方式不同。
1. hide()方法是jQuery提供的一个函数,用于隐藏元素.当使用hide()方法时,元素会被设置为display:none,即不显示在页面上,但仍然占据着原来的空间.隐藏后的元素可以通过调用s ...
- 移动web开发适配秘籍Rem
目录 移动web开发的特点 Rem 布局适配原理 Media Query(媒体查询) scss 工程使用函数计算 JS动态获取屏幕的宽度 直接将html 的 font-size 设置成 100px 移 ...
- 判断C盘下有没有Templets文件夹,没有则新建,然后判断Templets文件夹下有没有TEST.xlt文件
VB.NET 判断C盘下有没有Templets文件夹,没有则新建,然后判断Templets文件夹下有没有TEST.xlt文件,如果没有则新建 你可以使用VB.NET中的Directory和File ...
- [oeasy]python0111_字型码_字符字型编码_点阵字库_ascii演化
编码进化 回忆上次内容 上次回顾了 早期的英文字符点阵 最小的 3*5 通用的 5*7 点阵字库逐渐规范化 添加图片注释,不超过 140 字(可选) 这些点阵字符的字型 究竟是 ...
- oeasy教您玩转vim - 66 - # 比较修改模式 vimdiff
vimdiff 回忆上次 上次有三种批量替换,分别是 :windo :bufdo :argdo 执行的{cmd}可以用|按顺序增加 update 自动更新 :set autowrite 自动写入 ...
- 我从 Python 潮流周刊提取了 800 个链接,精选文章、开源项目、播客视频集锦
你好,我是豌豆花下猫.前几天,我重新整理了 Python 潮流周刊的往期分享,推出了第 1 季的图文版电子书,受到了很多读者的一致好评. 但是,合集和电子书的篇幅很长,阅读起来要花不少时间.所以,为了 ...