首页 > 其他分享 >扩展欧拉定理证明

扩展欧拉定理证明

时间:2024-12-13 23:12:41浏览次数:4  
标签:pmod 定理 扩展 varphi 证明 bmod 欧拉 equiv

我们知道,扩展欧拉定理的内容如下:

\[a^b\equiv\begin{cases}a^b &b<\varphi(m)\\ a^{(b\bmod \varphi(m)+\varphi(m))} &b\ge \varphi(m)\end{cases}\pmod m \]

但是又有多少人会它的证明呢?也许大佬们一看到就会证了,但是我刚刚才会,不得不说 oi-wiki 上的证明是真屎。

首先第一种情况显然,现在来证第二种情况。注意到第二种情况中如果 \((a,m)=1\) 是好证的,但是 \((a,m)>1\) 可就麻烦了。

但是我们可以考虑将 \(a\) 质因数分解,然后问题等价于证 \(a\) 的每个质因子满足条件即可。

那么显然每个质因子要么 \((p,m)=1\),要么 \(p|m\)。考虑证明第二种情况。

我们令 \(m=sp^k\),满足 \((p,s)=1\)。然后我们知道 \(p^{\varphi(s)}\equiv 1 \pmod{s}\)。注意到同余式相当于 \(p^{\varphi(s)}-ks=1\),考虑两边同时乘以 \(p^k\),也就是说 \(p^{\varphi(s)+k}\equiv p^k\pmod m\),这个形式并不优美,但是注意到 \(\varphi(m)=\varphi(s)\varphi(p^k)\),所以可以将式子变为 \(p^k\equiv p^{\varphi(m)+k}\pmod m\),于是我们找到了它的循环节,考虑运用它去证明定理。

然而由于 \(b\ge \varphi(m)\),且我们可以证明 \(k\le \varphi(m)\),这是好证的,考虑 \(\varphi(m)=\varphi(s)\varphi(p^k)=\varphi(s)(p^k-p^{k-1})\ge k\)。大于等于是显然的。那么我们可以先得出

\[p^b\equiv p^{k+((b-k)\bmod \varphi(m))}\pmod m \]

此时数论大佬已经会了,但是本蒟蒻需要再思考一下,这个式子相当于先走 \(k\) 步再进入循环节。然而我们可以让它先走 \(\varphi(m)\) 步,那么我们发现它会在环上多走 \(\varphi(m)-k\) 步。于是指数变为 \(\varphi(m)+((b-k-(\varphi(m)-k))\bmod \varphi(m))=\varphi(m)+(b\bmod\varphi(m))\),证毕。

标签:pmod,定理,扩展,varphi,证明,bmod,欧拉,equiv
From: https://www.cnblogs.com/lalaouyehome/p/18606053

相关文章

  • 转载:【AI系统】Ascend C 语法扩展
    AscendC的本质构成其实是标准C++加上一组扩展的语法和API。本文首先对AscendC的基础语法扩展进行简要介绍,随后讨论AscendC的两种API——基础API和高阶API。接下来针对AscendC的几种关键编程对象——数据存储、任务间通信与同步,资源管理以及临时变量进行详细解读......
  • 开发者工具的模块化与可扩展性设计
    文章目录前言模块化设计的重要性可扩展性设计的重要性设计模式与技术实现实战代码插件管理器类:PluginManager注册插件方法:register_plugin执行插件方法:execute_plugin插件实现插件1:代码格式化插件插件2:代码行数统计插件插件3:代码关键字检查插件主程序逻辑创建插件......
  • 转载:【AI系统】Ascend C 语法扩展
    AscendC的本质构成其实是标准C++加上一组扩展的语法和API。本文首先对AscendC的基础语法扩展进行简要介绍,随后讨论AscendC的两种API——基础API和高阶API。接下来针对AscendC的几种关键编程对象——数据存储、任务间通信与同步,资源管理以及临时变量进行详细解读......
  • 在CentOS 7中使用LVM扩展根分区
    1.查看当前分区和LVM状态使用lsblk命令查看当前分区,可以看到我有2个空闲的物理磁盘没有用sdb和sdc,如果没有添加一个物理磁盘,接下来我们将用sdb这个物理磁盘对根目录进行扩容。2.将物理卷添加到卷组(VG)使用vgextend命令将新物理卷添加到包含根分区的卷组中:vgextendvg_name......
  • 欧拉筛
    在素数筛法当中,首先先讲一下朴素的筛法和埃氏筛。朴素筛法:对于任何一个数i,我们从2到sqrt(i)挨个枚举看是不是i都无法整除这些数,如果是的话那么就说明i是素数,反之则不是埃氏筛:我们发现,在朴素筛法当中我们希望枚举每个数的因子,也就是说,当我们判断4是不是素数,我们枚举了2,判断6是不......
  • 转载:【AI系统】Ascend C 语法扩展
    AscendC的本质构成其实是标准C++加上一组扩展的语法和API。本文首先对AscendC的基础语法扩展进行简要介绍,随后讨论AscendC的两种API——基础API和高阶API。接下来针对AscendC的几种关键编程对象——数据存储、任务间通信与同步,资源管理以及临时变量进行详细解读......
  • 计组——ROM存储器——字位扩展实验
    一、字位扩展:存储芯片进行存储扩展的方法主要有三种:位扩展、字扩展和字位同时扩展。这些方法的应用取决于存储芯片的容量及字长与目标存储器的容量及字长之间的差异。一、位扩展(数据总线扩展、字长扩展)位扩展是在位数方向上扩展存储器的容量,即增加每个存储单元的数据位数,而......
  • 【新】ApiHug官方文档-ApiHug Spring Cache 扩展-4/10
    ApiHugSpringCacheExtension-ApiHugApiHugSDKSpringCache扩展https://apihug.com/zhCN-docs/framework/spring-cache快速开启-ApiHug如何在15分钟内,使用ApiHug启动一个API开发项目.https://apihug.com/zhCN-docs/startApiHug-APIdesignCopilot-IntelliJIDE......
  • UE4弹簧草及扩展
    【USparkle专栏】如果你深怀绝技,爱“搞点研究”,乐于分享也博采众长,我们期待你的加入,让智慧的火花碰撞交织,让知识的传递生生不息!如果草交互想实现回弹效果,就不能纯靠材质,而要有办法记录历史状态。找了一圈,发现下面这种在RT上做物理迭代的方案最便捷:【UE5模拟交互篇】(五)物理场方......
  • autofac 通过类方式完成aop扩展
    usingAutofac;usingAutofac.Extras.DynamicProxy;namespaceautofac通过类的方式扩展aop;classProgram{    staticvoidMain(string[]args)    {        //创建一个容器        ContainerBuilderbuilder=newContainerBuilder();   ......