求小于等于n且与n互质的数的个数

互质穷举法

  1. 互质:两个数互质代表两者最大公约数为1
  2. 最大公约数求法:辗转相除法,最小公倍数:较大值除以最大公约数乘以较小值
  3. 辗转相除法:
    1. 较大的数a取模较小的数b,得取模值c
    2. 若取模值等于0 则最大公约数为取模值,否则继续下一步
    3. a与c再次取模,回到第二步
    //求最大公约数gcd以及最大公倍数lcm// 36 24 36/24// 24 12 24/12// 0 结束最大公约数为12// 求最小公倍数// lcm(a, b) = (a * b)/gcd(a, b)public static int gcd(int a, int b){//a>=b//辗转相除法if (b==0){return a;}return gcd(b,a%b);}
    
  4. 穷举到n,一一判断该数与n的最大公约数是否为1,即是否为互质

结论:可以实现,但时间复杂度太高

采取欧拉函数进行求取

在数论,对正整数n,欧拉函数是小于等于n的正整数中与n互质的数的数目.

n为正整数n,p1、p­­­­2 ……pn 为正整数n的质因数

n的质因数:既是n的因数,又是质数的数

计算方法:
ϕ(n)=n×(p1−1p1)×(p2−1p2)⋯×(pn−1pn)\phi (n) = n \times (\frac{p_1-1}{p_1})\times (\frac{p_2-1}{p_2})\cdots\times (\frac{p_n-1}{p_n}) ϕ(n)=n×(p1​p1​−1​)×(p2​p2​−1​)⋯×(pn​pn​−1​)
例:
ϕ(10)=10×12×45=4\phi (10) = 10 \times \frac{1}{2}\times \frac{4}{5} = 4 ϕ(10)=10×21​×54​=4

  1. 质数的求法:因数只有1和其本身

    1. 单个质数n的判断

      依次判断2到$ \sqrt{n} $的数被n取模的值是否等于零,存在任意一个即不为质数

      当p大于n\sqrt{n}n​时,代表数p一定可以得到一个小于!n\sqrt{n}n​的数和一个大于n\sqrt{n}n​的成对因数,不为质数

    2. 从2到n的质数的判断

      非穷举,穷举时间复杂度为O(n),使用素数筛法为O(log⁡n\log_{}{n}log​n)

      为保证效率,质数为false,合数为true

      1. 标记2到n的数都为质数,为false,布尔数组默认值为false,无需再一一标记

      2. 从2开始标记数,找到第一个为false的数p

      3. 标记数p的倍数为合数,即为true,倍数标记从 p×pp \times pp×p 开始,直至数p等于$ \sqrt{n} $,结束标记

        原因:

        p的倍数的因数必有p,不符合质数条件,每次从 p×pp \times pp×p 开始标记是由于p−pp-pp−p的部分已经进行了标记,不再重复标记,

  1. 使得下一个数p 为未被标记为合数的数,即数值仍为false的数,重复第三步

  2. 将标记为false 的,即为质数的全部输出

  1. 采取素数筛法求取质数时,可将倍数标记的操作修改为乘以(1-1/p),使得每一个数都能乘以其质因数

  1. 依次存入数组中,最后统一依次输出结果。
public static int f1(int n){int res = n;for (int i = 2;i*i<=n;i++){if (n % i==0){res = res / i*(i-1);//res/iwhile (n % i == 0){n/=i;}}}if (n>1){res = res/n*(n-1);}return res;}//区间内欧拉函数取值public static int[] f2(int n){int[] count = new int[n+1];for (int i = 1;i <= n;i++){count[i]=i;}for (int i =2 ;i <= n;i++){if (count[i] == i){for (int j = i;j <= n;j+=i){count[j] = count[j]/i*(i-1);}}}return count;}

知识点:

  1. 最大公约数、最小公倍数

  2. 单一质数判断

  3. 质数筛法:埃氏筛法

  4. 欧拉函数

欧拉函数:求小于等于n且与n互质的数的个数相关推荐

  1. 关于求1~n中与m互质的数的个数(容器原理+数论分解质因子)

    D. Count GCD 这道题严格来讲不难,a[i]与b[i+1]最大公约数为a[i+1],所以a[i]与b[i+1]必定整除a[i+1],且a[i]/a[i+1]与b[i+1]/a[i+1]互质, ...

  2. UVA10820欧拉函数求互质的对数

    题意: 给出n,算出小于等于n的所有数中,有几对互质: 思路: 利用欧拉函数求与x互质的数的个数prime[x],再将prime[x]递推累加prime[x]=prime[x]+prime[x-1], ...

  3. 欧拉函数(求与n互质的数的个数)

    求解与n(1-n-1)互质的质因子的个数 解析:(转) 定义:对于正整数n,φ(n)是小于或等于n的正整数中,与n互质的数的数目. 例如:φ(8)=4,因为1,3,5,7均和8互质. 性质:1.若p是 ...

  4. 欧拉函数求互质数个数

    求解与n(1-n-1)互质的质因子的个数 解析: 定义:对于正整数n,φ(n)是小于或等于n的正整数中,与n互质的数的数目. 例如:φ(8)=4,因为1,3,5,7均和8互质. 性质:1.若p是质数, ...

  5. 欧拉函数求互质数的个数

    互质数的个数(一) 思路:欧拉函数. 题目链接 import java.util.Scanner;public class Main{public static void main(String[] ...

  6. 欧拉函数求一个数倒数的循环节长度

    首先,费马小定理a与p互素,则a^(p-1)≡1(mod p)  对于一个素数p,取a=10,那么10^(p-1)≡1(mod p)  如果找到一个正整数e使得10^e/p-1/p为整数,那么e就是1 ...

  7. 22.3.8欧拉函数

    对一个正整数N,欧拉函数是小于N且与N互质的数的个数.. #include<stdio.h> #include<math.h> int oula(int n)//欧拉函数模板 ...

  8. 数论之互质与欧拉函数

    文章开始前先给大家安利我学长以前写的数论的blog:aliayc 文章目录 互质 欧拉函数 质因数分解求欧拉函数 筛法求欧拉函数 性质 积性函数 定义 性质 题目 互质 定义 ∀ a , b ∈ N ...

  9. hdu (欧拉函数+容斥原理) GCD

    题目链接http://acm.hdu.edu.cn/showproblem.php?pid=1695 看了别人的方法才会做 参考博客http://blog.csdn.net/shiren_Bod/ar ...

最新文章

  1. LeetCode简单题之二叉搜索树的最小绝对差/最小距离
  2. Column store index 列数据如何匹配成行数据?
  3. python学习详解_深入解析Python小白学习【操作列表】
  4. Apache Derby-02通过IJ简单操作DERBY
  5. 获取${}中的值? 比如说var a=${date },无法取出date中的值
  6. 非计算机专业教学改革,非计算机专业算法分析与设计教学改革论文
  7. excel显著性检验_怎样征服老板?教你用excel找到数据之间隐藏信息
  8. 【编程珠玑】第六章 程序性能分析
  9. Delphi插件创建、调试与使用应用程序扩展
  10. C++ 中两个数据交换总结
  11. 3dmax推荐用哪个版本,主流好用的版本有哪些?
  12. 常见的几种锁(互斥锁,自旋锁,乐观锁,悲观锁)
  13. 电脑字母,电脑英文字母大小写怎么转换
  14. 新浪微博注册(elenium Python 自动化)
  15. 电脑仙人掌机器人作文_仙人掌作文3篇
  16. amcharts属性
  17. 如何查看笔记本电脑的型号?
  18. J2EE高级开发框架小课程之Spring框架2——Spring容器作用域,生命周期,Spring管理对象之间依赖关系
  19. 彻底解决使用Doxygen 1.5.6自动生成的chm文件导航栏中文乱码问题
  20. html文件的基本结构包括不包括哪部分,Html基本结构

热门文章

  1. Android开发 shape使用
  2. 容器单机编排工具 Docker Compose,swap 限制,配置默认的CFS调度程序,Stress-ng 压力测试工具,docker官网镜像上传,及阿里云镜像上传,Docker 的资源限制
  3. 春运指南之:12306网上订票自动登录下单攻略及相关最新软件
  4. 使用onclick()事件以及this获取当前标签属性值的问题
  5. appium+python闲鱼采购自动化实战(二)
  6. 认识tensorflow-自模拟一个线性回归预测
  7. 浅谈百度的FIS3框架
  8. mysql 自增_mysql自增
  9. EAS修改admin密码
  10. PN532资料 NFC RFID V3模块