如何求欧拉函数~转载
三、欧拉函数
请思考以下问题:
任意给定正整数n,请问在小于等于n的正整数之中,有多少个与n构成互质关系?(比如,在1到8之中,有多少个数与8构成互质关系?)
计算这个值的方法就叫做欧拉函数,以φ(n)表示。在1到8之中,与8形成互质关系的是1、3、5、7,所以 φ(n) = 4。
φ(n) 的计算方法并不复杂,但是为了得到最后那个公式,需要一步步讨论。
第一种情况
如果n=1,则 φ(1) = 1 。因为1与任何数(包括自身)都构成互质关系。
第二种情况
如果n是质数,则 φ(n)=n-1 。因为质数与小于它的每一个数,都构成互质关系。比如5与1、2、3、4都构成互质关系。
第三种情况
如果n是质数的某一个次方,即 n = p^k (p为质数,k为大于等于1的整数),则
比如 φ(8) = φ(2^3) =2^3 - 2^2 = 8 -4 = 4。
这是因为只有当一个数不包含质数p,才可能与n互质。而包含质数p的数一共有p^(k-1)个,即1×p、2×p、3×p、...、p^(k-1)×p,把它们去除,剩下的就是与n互质的数。
上面的式子还可以写成下面的形式:
可以看出,上面的第二种情况是 k=1 时的特例。
第四种情况
如果n可以分解成两个互质的整数之积,
n = p1 × p2
则
φ(n) = φ(p1p2) = φ(p1)φ(p2)
即积的欧拉函数等于各个因子的欧拉函数之积。比如,φ(56)=φ(8×7)=φ(8)×φ(7)=4×6=24。
这一条的证明要用到"中国剩余定理",这里就不展开了,只简单说一下思路:如果a与p1互质(a<p1),b与p2互质(b<p2),c与p1p2互质(c<p1p2),则c与数对 (a,b) 是一一对应关系。由于a的值有φ(p1)种可能,b的值有φ(p2)种可能,则数对 (a,b) 有φ(p1)φ(p2)种可能,而c的值有φ(p1p2)种可能,所以φ(p1p2)就等于φ(p1)φ(p2)。
第五种情况
因为任意一个大于1的正整数,都可以写成一系列质数的积。
根据第4条的结论,得到
再根据第3条的结论,得到
也就等于
这就是欧拉函数的通用计算公式。比如,1323的欧拉函数,计算过程如下:
如何求欧拉函数~转载相关推荐
- 线性筛法 与 线性求欧拉函数 的计算模板
简介 懂得如何快速计算质数是十分重要的 在筛法的基础上,我们可以使用更为高级的线性筛法! 顾名思义,就是时间复杂度是线性的,即 O(N)O(N) ,N 为所求的质数范围 而对编程有所接触的人,应该都知 ...
- 【模板题】欧拉函数与线性筛求欧拉函数
欧拉函数是什么? 定义:对于正整数nnn,欧拉函数是小于或等于nnn的正整数中与nnn互质的数的个数,记作φ(n)\varphi (n)φ(n). φ(1)=1\varphi (1)=1φ(1)=1. ...
- 874. 筛法求欧拉函数
874. 筛法求欧拉函数 题目 代码 题目 给定一个正整数 n,求 1∼n 中每个数的欧拉函数之和. 输入格式 共一行,包含一个整数 n. 输出格式 共一行,包含一个整数,表示 1∼n 中每个数的欧拉 ...
- AcWing 874. 筛法求欧拉函数
线性筛法求解欧拉函数 有关线性筛法的介绍,可以参考这道题:868. 筛质数 - AcWing题库 这道题y总采用了线性筛选法来筛选掉指定范围内的合数,筛选出质数.思维利用得极为巧妙. 结合y总讲解视频 ...
- AcWing 874. 筛法求欧拉函数(线性筛法求欧拉函数模板)
给定一个正整数 n,求 1∼n 中每个数的欧拉函数之和. 输入格式 共一行,包含一个整数 n. 输出格式 共一行,包含一个整数,表示 1∼n 中每个数的欧拉函数之和. 数据范围 1≤n≤10^6 输入 ...
- hdu2824(2009多校第一场) 线性筛法求欧拉函数
欧拉函数指小于n且与其互质的数个数: phin=n*(1-1/p1)*(1-1/p2)*...(1-1/pn) 由此便可以利用类似筛素数筛出所有欧拉函数,具体看代码: 1 #include<st ...
- ~~筛法求欧拉函数(附模板题)
模板 int primes[N], cnt; // primes[]存储所有素数 int euler[N]; // 存储每个数的欧拉函数 bool st[N]; // st[x]存储x是否被筛掉voi ...
- AcWing 874. 筛法求欧拉函数(欧拉函数)
题目链接 https://www.acwing.com/problem/content/876/ 思路 对于一个数x如果是质数,那么它的欧拉函数就为x−1x-1x−1,对于其他合数我们可以将其拆成最小 ...
- XDOJ-1098-突击数论前的xry111(筛选法求欧拉函数)
转载于:https://www.cnblogs.com/GrowingJlx/p/6642766.html
最新文章
- java程序设计实验报告_JavA程序设计实验报告.doc
- 耗时三小时整理的机器视觉知识-建议收藏转发
- C#进阶系列——WebApi 跨域问题解决方案:CORS
- Element UI——布局容器el-container子元素强制上下排列
- 2020年408真题_2020年408真题和参考解析
- engagement center的session.connect
- pat00-自测5. Shuffling Machine (20)
- Leetcode--279. 完全平方数
- 【记录】Docker push 到dockerhub网站
- VS2013中修改.dll工程项目的.lib和.dll的输出路径
- android 底部停靠 底部吸附_android让xml布局的底部跟随软键盘
- Node对CommonJS模块的实现
- OSChina 周二乱弹 ——有时醒来发现身边是不同的姑娘
- MVC4 数据验证、特性、自动属性总结
- NoSQL数据库知识
- 日常英语口语900句
- File /py-faster-rcnn/tools/../lib/datasets/imdb.py, line 108, in append_flipped_images assert
- python泰勒公式计算e的x次方_e的x次方在x0=0的泰勒展开式
- Xshell连接路由器或交换机Console口
- 一周信创舆情观察(1.24~2.6)