【转】【关于 A^x = A^(x % Phi(C) + Phi(C)) (mod C) 的若干证明】【指数循环节】

2024-06-13 04:58
文章标签 mod 循环 指数 若干 证明 phi

本文主要是介绍【转】【关于 A^x = A^(x % Phi(C) + Phi(C)) (mod C) 的若干证明】【指数循环节】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【关于 A^x = A^(x % Phi(C) + Phi(C)) (mod C) 的若干证明】【指数循环节】

以下内容全部原创,转载请注明作者 : AekdyCoin 以及本文地址


曾经看过如下一个公式:



以上的公式如果第一次见到,难免有不少疑惑:
为什么可以这么写?限制条件为什么是x >= Phi(C),这个公式为什么正确?

今天突发奇想,在纸上YY以后得到了以下证明(个人证明,如果有问题欢迎提出)

定理 1:
对于一个数对(A,C) 必然存在一个最小的正整数 L,满足


其中SPOS 是一个大于等于0的整数(下面具体介绍)
我们称L 为(A,C) 的最小循环节长度

证明:
根据鸽巢原理,得到在x >= C 后必然出现循环,从而定理得证.

定理 2:
对于数对 (A,C) 下面的公式必然成立


其中 k >= 0
既L 的任意倍数均为一个新的循环节长度.
证明:
根据定理1,不难得证.

定理 3:
对于数对 (A,C) 必然存在 一个最大的SPOS >=0 ,满足
(1)    若x属于区间 [0,SPOS -1] 内,得到的一个剩余系的长度为SPOS;
(2)    该剩余系和x属于[SPOS,+oo]的剩余系的交集为空!

证明:
对于一个SPOS,由于[0,SPOS-1]内不存在循环,所以x属于[0,SPOS-1]内得到的值是唯一的.
而第二点的证明也不难,因为如果不为空,那么必然可以缩小SPOS的值.

定理 4:
对于数对 (A,C) 若 (A,C) == 1,那么 L | Phi(C)

证明:
显然可以由欧拉公式,得到
A^Phi(C) = 1 (mod C)
而A^0 = 1 (mod C),于是出现了循环
由定理2,该定理得证.

定理5:
对于数对 (A,C) 若 A|C
那么有
SPOS >= CNT
其中CNT为满足  A^CNT | C的最大的正整数

下面分2个情况
(1) A^CNT == C
果断显然成立
(2) A^CNT  * B = C
于是我们假设对于[0,CNT] 内存在某个数i,有
A^i = A^x (mod C)
而由于x > CNT (因为[0,CNT]内不存在循环)
所以
A^CNT * A^(x - CNT) = A^i (mod A^CNT * B)
显然如果 i < CNT
那么是不可能有解的
因为(A^CNT, A^CNT * B) | A^i 显然不成立

于是Spos >= CNT 得证

定理 6:
对于一个数对 (A,C) 若存在



那么有 L | M

根据定理1,2 不难得到.



好了,上面写了那么多,是为了介绍 循环节的基本定理
下面开始正题,开始公式的证明

我们对于A 进行分解,得到素因子集合



下面我们把素因子分为2类
(1)    (Pi,C) == 1
(2)    (Pi,C) != 1

对于第一类情况,我们容易由定理4知道对于每一个 Pi,得到了Li (  数对 (Pi,C) 的最小循环节长) 必然是 Phi(C) 的因子
对于第二类情况,由定理5,”消去 因子”,转化为第一类的情况.得到了 这类的素因子Pi 的Li 依然为Phi(C) 的因子

@2011-01-11 对于第二类情况的更新

由循环定义得到

(Pi^ci)^x = (Pi^ci)^(x + Li) (mod C) (x >= spos)

那么我们假设C = Pi^CNT * B, 其中 (B, Pi) = 1

那么

(Pi^ci)^x = (Pi^ci)^(x + Li) (mod Pi^CNT * B)

同时消去Pi因子,最终可以得到:

[Pi^a] * [Pi^ci]^b = [Pi^a] * [Pi^ci]^b * [Pi^ (ci  * Li)] (mod B)

(Pi^a, B) = 1,逆元存在,2边同时乘上 Pi^a的逆元

[Pi^ci]^b = [Pi^ci]^b * [Pi^ (ci  * Li)] (mod B)

===>

[Pi^ci] ^b = [Pi^ci] ^ (b + Li) (mod B)

Li 为Phi(B)的因子,B为C的因子,既

Li | Phi(B), B| C

 

 

下面我们构造所有素因子的循环,既求他们的LCM,那由于定理6不难知道,(A,C) 的最小循环节长 L | LCM(L1,L2…LK)
而Li |Phi(C)

所以 L | Phi(C)

之后由定理1,2 公式得证.

推荐题目:

http://acm.fzu.edu.cn/problem.php?pid=1759
Problem 1759 Super A^B mod C  直接运用公式
http://acm.hdu.edu.cn/showproblem.php?pid=3221
2009年shanghai B,得到DP以后利用公式
http://acm.hdu.edu.cn/showproblem.php?pid=2837
Calculation 递归,注意细节
PS.  标程在某个细节处理错误,可是数据是对的.

这篇关于【转】【关于 A^x = A^(x % Phi(C) + Phi(C)) (mod C) 的若干证明】【指数循环节】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1056349

相关文章

MySQL存储过程之循环遍历查询的结果集详解

《MySQL存储过程之循环遍历查询的结果集详解》:本文主要介绍MySQL存储过程之循环遍历查询的结果集,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言1. 表结构2. 存储过程3. 关于存储过程的SQL补充总结前言近来碰到这样一个问题:在生产上导入的数据发现

Nginx部署React项目时重定向循环问题的解决方案

《Nginx部署React项目时重定向循环问题的解决方案》Nginx在处理React项目请求时出现重定向循环,通常是由于`try_files`配置错误或`root`路径配置不当导致的,本文给大家详细介... 目录问题原因1. try_files 配置错误2. root 路径错误解决方法1. 检查 try_f

Spring三级缓存解决循环依赖的解析过程

《Spring三级缓存解决循环依赖的解析过程》:本文主要介绍Spring三级缓存解决循环依赖的解析过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、循环依赖场景二、三级缓存定义三、解决流程(以ServiceA和ServiceB为例)四、关键机制详解五、设计约

Spring 中的循环引用问题解决方法

《Spring中的循环引用问题解决方法》:本文主要介绍Spring中的循环引用问题解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录什么是循环引用?循环依赖三级缓存解决循环依赖二级缓存三级缓存本章来聊聊Spring 中的循环引用问题该如何解决。这里聊

C# foreach 循环中获取索引的实现方式

《C#foreach循环中获取索引的实现方式》:本文主要介绍C#foreach循环中获取索引的实现方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、手动维护索引变量二、LINQ Select + 元组解构三、扩展方法封装索引四、使用 for 循环替代

Spring Boot循环依赖原理、解决方案与最佳实践(全解析)

《SpringBoot循环依赖原理、解决方案与最佳实践(全解析)》循环依赖指两个或多个Bean相互直接或间接引用,形成闭环依赖关系,:本文主要介绍SpringBoot循环依赖原理、解决方案与最... 目录一、循环依赖的本质与危害1.1 什么是循环依赖?1.2 核心危害二、Spring的三级缓存机制2.1 三

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

Python循环缓冲区的应用详解

《Python循环缓冲区的应用详解》循环缓冲区是一个线性缓冲区,逻辑上被视为一个循环的结构,本文主要为大家介绍了Python中循环缓冲区的相关应用,有兴趣的小伙伴可以了解一下... 目录什么是循环缓冲区循环缓冲区的结构python中的循环缓冲区实现运行循环缓冲区循环缓冲区的优势应用案例Python中的实现库

Java嵌套for循环优化方案分享

《Java嵌套for循环优化方案分享》介绍了Java中嵌套for循环的优化方法,包括减少循环次数、合并循环、使用更高效的数据结构、并行处理、预处理和缓存、算法优化、尽量减少对象创建以及本地变量优化,通... 目录Java 嵌套 for 循环优化方案1. 减少循环次数2. 合并循环3. 使用更高效的数据结构4

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(