欧拉函数就是指:给定一个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

欧拉函数定理及其性质相关推荐

  1. 欧拉函数φ(x)相关性质及计算

    定义: 对 正整数nnn,欧拉函数是 小于nnn的正整数 中 与nnn互质的数的数目.(φ(1)=1\varphi(1)=1φ(1)=1) 互质:aaa与bbb互质,即gcd⁡(a,b)=1\gcd( ...

  2. 欧拉函数定义及其性质

    参考:这里 前言 这是笔者第一次写博客,挑选了一些笔者认为比较有意思且简单的欧拉函数的性质,希望各位看完的同时也自己动手证明一下,会对学习欧拉函数有很大的帮助. 一.定义 在1~n中与n互质的数的个数 ...

  3. Master of Phi (欧拉函数 + 积性函数的性质 + 狄利克雷卷积)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6265 题目大意:首先T是测试组数,n代表当前这个数的因子的种类,然后接下来的p和q,代表当前这个数的因 ...

  4. 扒一扒那些叫欧拉的定理们(十一)——欧拉数论定理

    早点关注我,精彩不错过! 转眼欧拉系列已经写了10篇,进入尾声的同时也是渐入佳境.前面我们聊到的是立体和平面几何,图论,复数领域的欧拉定理,相关内容请戳: 扒一扒那些叫欧拉的定理们(十)--群论观点下 ...

  5. 欧拉函数和莫比乌斯反演(Mobius)

    这几天研究了之前一直困扰自己很久的莫比乌斯反演,虽然自己现在学的还不是很好,就简简单单的写一下总结吧,咦,都没学会掌握我就写总结好像很欠揍,欧拉函数现在也系统的整理一下好了 一.欧拉函数 1.定义:* ...

  6. 数学/数论专题:莫比乌斯函数与欧拉函数

    数学/数论专题:莫比乌斯函数与欧拉函数(进阶) 0. 前言 1. 前置知识 2. 正文 3. 总结 4. 参考资料 0. 前言 本篇文章会从狄利克雷卷积的角度,讨论莫比乌斯函数与欧拉函数的相关性质. ...

  7. 数论基础——欧拉函数

    欧拉函数: 就是对于一个正整数n,小于n且和n互质的正整数(包括1)的个数,记作φ(n) . 欧拉函数的通式:φ(n)=n*(1-1/p1)(1-1/p2)(1-1/p3)*(1-1/p4)--(1- ...

  8. 欧拉函数+欧拉定理+拓展欧拉定理(欧拉降幂)

    目录 欧拉函数 欧拉定理 拓展欧拉定理(欧拉降幂) 欧拉函数 在数论中,有正整数n,欧拉函数是小于n的正整数中与n互质的数的数目. 它的通式如下: φ(n)=n*(1-1/p1)*(1-1/p2)*( ...

  9. (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 ...

最新文章

  1. 找不到第三方怎么理赔_车子被撞,找不到肇事者怎么办?
  2. WIFI 基本理论-2017
  3. jmap之使用说明与JVM配置
  4. 200设备管理器找不到蓝牙_达尔优LK200蓝牙键盘,一键切换+支持三台设备+百元不到...
  5. [渝粤教育] 广东-国家-开放大学 21秋期末考试建筑设备10327k1
  6. [html] 要减少DOM的数量有什么办法吗?
  7. 2016第三届科学数据大会诚邀商务合作
  8. nexus、maven私服仓库(一)
  9. 串口通信工具android,Android串口通信工具
  10. 笔记本电脑黑屏但还在运作怎么办
  11. 数据库oracle有哪些函数,Oracle函数大全
  12. Struts2之result的配置
  13. linux cpu load命令,Linux性能检测常用的10个基本命令
  14. win7 做服务器开网站,win7下创建Web服务器
  15. quartz定时任务配置
  16. 信息系统项目管理师必背核心考点(二十四)WBS分解的原则
  17. 太极图形html5代码,canvas绘制太极图的实现示例
  18. 分治算法之循环赛程日志表
  19. 2020-05-13
  20. 互联网发展新篇章 下一波红利在哪里?

热门文章

  1. sqar+matlab,基于MATLAB的数字图像预测压缩编码
  2. 重命名Active Directory域名
  3. 中国象棋棋盘java_如何用java swing 实现中国象棋的棋盘。棋盘就好。。。
  4. 自己使用的git总结
  5. Web前端_配合swiper滑动插件实现同比例双指缩放图片
  6. Layui数据表格隔行变色的两种方法
  7. jnlp文件打开方式(jnlp文件打开方式Java)
  8. 普通平键的主要尺寸有_平键的基本参数
  9. Java集合(一)Java集合及其关系
  10. 如何在PowerPoint中更改文本的大小写