欧拉函数定理及其性质
欧拉函数就是指:给定一个n,求得1到n中与n互质的数的个数
再介绍欧拉通项前,首先得介绍唯一分解定理
那么求一个数的欧拉值的公式为:
φ(n)=n * (1-1/P1) * (1-1/P2) * … * (1-1/Pn)
其中的P1到Pn为n分解出来的质因子
那么求一个数的欧拉值的时间复杂度为O(sqrt(n))
代码实现:
int euler(int n)
{int ans = n;for(int i = 2;i * i <= n;i++)//标准的分解质因子的模板{if(n % i == 0){ans = ans / i * (i-1);//现在的i为质因子,根据公式(1-(1/i)),也就是乘以(i-1)/i//而这里先除是因为现在能被整除,避免了误差while(n % i == 0)n /= i;}}if(n > 1)ans = ans / n * (n-1);return ans;
}
但是如果求1到n中所有数的欧拉值,那么现在的时间复杂度为O(n*sqrt(n)),如果数多还是挺耗时间的。
那么如何优化呢?
首先我们已经知道了每一个数都能写成多个质数的乘积形式。
例:
我们赋值数组phi[16]中phi[1] = 1,phi[2] = 2,…phi[15] = 15
那么我们现在枚举质数:
现在的质数为2,那么我们把2的倍数的数,根据欧拉公式来乘(i-1)/i,也就是phi[2] * = (1/2),phi[4] * = (1/2),phi[6]…phi[14] * = (1/2),然后再枚举3这个质因子,再枚举5…
代码实现
int phi[n+1];
int euler(int n)
{for(int i = 1;i <= n;i++)phi[i] = i;for(int i = 2;i <= Max;i++)//Max就是代表最大值if(phi[i] == i)//表明了这是一个质数for(int j = i;j <= Max;j += i)phi[j] = phi[j]/i*(i-1);
}
这样时间复杂度能降下来
欧拉函数的性质:
1.如果n,m互质,那么 : φ(n*m) = φ(n)*φ(m)
2.如果n为质数,那么 : φ(n) = n-1,可推出1中φ(n * m) = (n-1)*(m-1)
3.如果n % m == 0,那么 : φ(n * m) = m * φ(n)
4.在3的基础上 : if(n % m == 0 && φ(n / m)%m == 0) φ(n) = φ(n/m)*m
5.在3的基础上 : if(n % m == 0 && φ(n / m)%m != 0) φ(n) = φ(n/m)*(m-1)
6.当n为奇数时,φ(n) = φ(2*n)
7.与小于等于n中,与n互质的数之和为:φ(n)*n/2
欧拉函数定理及其性质相关推荐
- 欧拉函数φ(x)相关性质及计算
定义: 对 正整数nnn,欧拉函数是 小于nnn的正整数 中 与nnn互质的数的数目.(φ(1)=1\varphi(1)=1φ(1)=1) 互质:aaa与bbb互质,即gcd(a,b)=1\gcd( ...
- 欧拉函数定义及其性质
参考:这里 前言 这是笔者第一次写博客,挑选了一些笔者认为比较有意思且简单的欧拉函数的性质,希望各位看完的同时也自己动手证明一下,会对学习欧拉函数有很大的帮助. 一.定义 在1~n中与n互质的数的个数 ...
- Master of Phi (欧拉函数 + 积性函数的性质 + 狄利克雷卷积)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6265 题目大意:首先T是测试组数,n代表当前这个数的因子的种类,然后接下来的p和q,代表当前这个数的因 ...
- 扒一扒那些叫欧拉的定理们(十一)——欧拉数论定理
早点关注我,精彩不错过! 转眼欧拉系列已经写了10篇,进入尾声的同时也是渐入佳境.前面我们聊到的是立体和平面几何,图论,复数领域的欧拉定理,相关内容请戳: 扒一扒那些叫欧拉的定理们(十)--群论观点下 ...
- 欧拉函数和莫比乌斯反演(Mobius)
这几天研究了之前一直困扰自己很久的莫比乌斯反演,虽然自己现在学的还不是很好,就简简单单的写一下总结吧,咦,都没学会掌握我就写总结好像很欠揍,欧拉函数现在也系统的整理一下好了 一.欧拉函数 1.定义:* ...
- 数学/数论专题:莫比乌斯函数与欧拉函数
数学/数论专题:莫比乌斯函数与欧拉函数(进阶) 0. 前言 1. 前置知识 2. 正文 3. 总结 4. 参考资料 0. 前言 本篇文章会从狄利克雷卷积的角度,讨论莫比乌斯函数与欧拉函数的相关性质. ...
- 数论基础——欧拉函数
欧拉函数: 就是对于一个正整数n,小于n且和n互质的正整数(包括1)的个数,记作φ(n) . 欧拉函数的通式:φ(n)=n*(1-1/p1)(1-1/p2)(1-1/p3)*(1-1/p4)--(1- ...
- 欧拉函数+欧拉定理+拓展欧拉定理(欧拉降幂)
目录 欧拉函数 欧拉定理 拓展欧拉定理(欧拉降幂) 欧拉函数 在数论中,有正整数n,欧拉函数是小于n的正整数中与n互质的数的数目. 它的通式如下: φ(n)=n*(1-1/p1)*(1-1/p2)*( ...
- (hdu step 7.2.1)The Euler function(欧拉函数模板题——求phi[a]到phi[b]的和)
题目: The Euler function Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
最新文章
- 找不到第三方怎么理赔_车子被撞,找不到肇事者怎么办?
- WIFI 基本理论-2017
- jmap之使用说明与JVM配置
- 200设备管理器找不到蓝牙_达尔优LK200蓝牙键盘,一键切换+支持三台设备+百元不到...
- [渝粤教育] 广东-国家-开放大学 21秋期末考试建筑设备10327k1
- [html] 要减少DOM的数量有什么办法吗?
- 2016第三届科学数据大会诚邀商务合作
- nexus、maven私服仓库(一)
- 串口通信工具android,Android串口通信工具
- 笔记本电脑黑屏但还在运作怎么办
- 数据库oracle有哪些函数,Oracle函数大全
- Struts2之result的配置
- linux cpu load命令,Linux性能检测常用的10个基本命令
- win7 做服务器开网站,win7下创建Web服务器
- quartz定时任务配置
- 信息系统项目管理师必背核心考点(二十四)WBS分解的原则
- 太极图形html5代码,canvas绘制太极图的实现示例
- 分治算法之循环赛程日志表
- 2020-05-13
- 互联网发展新篇章 下一波红利在哪里?