第四章 数学知识二
欧拉函数
什么是欧拉函数
欧拉函数
例如:
a,b互质就是gcd(a,b) = 1
如何求解欧拉函数
对于一个数N,可以分解质因数为
比如
证明
利用容斥原理
- 从1 - N 中 去除其全部质因子
的所有倍数,那么还剩下 个数 - 有的数既是
的倍数又是 的倍数因此被减了两遍,需要将这一部分加回来, - 有的数是
、 、 的倍数,在第一步减了三次,在第二步加了三次,相当于没加也没减,因此需要减掉一次,因此 , 是1 - n的一组排列
以此类推到第n步,化简就是上边的公式
代码模板
!注意每一步计算
筛法求欧拉函数
利用质数的线性筛法求1-n的欧拉函数
由于在线性筛法的执行过程中,对于质数会保留,对于合数会用其最小质因子筛掉。所以线性筛法是会访问到所有数的。而根据上面的推导,在遇到每种情况时,我们都能求出欧拉函数
-
当这个数是质数:
-
当这个数是合数:
某个合数一定是被
` 给删掉的,我们就在删他的时候求他的欧拉函数值- 如果
i % pj == 0
,那么pj
就是i
的某个质因数,那么 和i
的质因数组合完全相同,所以 - 如果
i % pj != 0
,那么 的质因数组合就是在i
的质因数组合基础上加了一个pj
,所以
- 如果
代码模
欧拉函数应用
欧拉定理:若a与n互质,那么有
费马定理:若a与p互质,p是质数,那么有
证明略
快速幂
可以快速的求出a、k、p
的范围都是
核心思路:反复平方法
预处理出:
当求
得到
预处理一共计算出
代码模板
扩展欧几里得算法
裴蜀定理:对于任意正整数a,b,那么一定存在非零整数x,y,使得ax+by=gcd(a,b)
证明:令 gcd(a,b) = c ,则a一定是c的倍数,b也一定是c的倍数,那么ax+by也一定是c的倍数,那么可以凑出最小的倍数就是1倍,即ax+by=gcd(a,b)
给定a,b如何求解x,y就是扩展欧几里得算法
代码模板
扩展欧几里得算法用来解决这样一个问题,ax+by=m,求x,y,如果m是gcd(a,b)的倍数,则有解,解就是倍数乘以x,y,否则就是无解
此外,还可以解线性同余方程/方程组,例如解
解方程组
中国剩余定理
有k个两两互质的数
解法:令
则
__EOF__

本文链接:https://www.cnblogs.com/chenjq12/p/17115049.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】