前言

可能经常进群会问这个群号的最大素因数是多少,或者算法题中也会遇到。今天就写一下求最大质因数的模板。

分析

  • 首先分析,怎么求一个数的最大素因数。首先,我们以前求过最大因数,求最大因数的最暴力为2—n-1暴力查找 ,但是这样太超时了,后来发现在根号n前或者后某个区域查找就行了。因为找某个因数时候。n=a* b;a<=根号n;b>=根号n;所以只需查找到最小的因数就可以通过除法找到最大的因数。这只是查找因数的一个思路。

  • 至于什么是素因数呢。那么这个数肯定满足两个条件:1为质数。2为n的因数。那么我们如何从众多n的因数中找到最大的那个素因数呢?

举个例子

  • 对于8=2 * 4=2*(2*2);那么8的最大素因数是2;
  • 对于20=2 * 10=2*(2*5)那么20的最大素因数是5;

可以发现这个查找就是一个递归的过程。对于某个n,查找的最大素因数就是他的最大因数和最小因数的两个数的最大质因数。在往下调用的过程中,如果某个数是质数那么就不进行往下递归,(当然也可以进行剪枝优化,比如设置一个参数为已经找到素因数的最大值,当数值小于这个数就不进行递归减小程序的运算量,但是一般主要的循环到根号n不会超时)
下面附上代码:

private static int getmax(int a) {for(int i=2;i*i<a+1;i++){if(a%i==0){return getmax(a/i)>getmax(i)?getmax(a/i):getmax(i);}   }return a;// 如果找不到因数他自己就是最大素因数}

如果对后端、爬虫、数据结构算法等感性趣欢迎关注我的个人公众号交流:bigsai

递归求最大素因数(java)相关推荐

  1. java阶乘递归_java递归求阶乘,java实现递归阶乘详解

    下面要给大家讲到的就是和java递归求阶乘相关的内容,那么你知道应该如何实现吗?一起通过下面的例子来详细的了解吧. 话不多说,就直接给大家上代码了!public class Factorial { p ...

  2. 蓝桥杯 ALGO-150 算法训练 6-1 递归求二项式系数值 java版

    问题描述 样例输入 一个满足题目要求的输入范例. 3 10 样例输出 与上面的样例输入对应的输出. 数据规模和约定 输入数据中每一个数的范围. 例:结果在int表示时不会溢出. 简单的递归. impo ...

  3. 蓝桥杯-递归求二项式系数值(java)

    算法训练 6-1 递归求二项式系数值 时间限制:10.0s 内存限制:256.0MB问题描述样例输入一个满足题目要求的输入范例.3 10样例输出与上面的样例输入对应的输出.数据规模和约定输入数据中每一 ...

  4. java数组排列组合_java算法题--递归求数组中数字排列组合问题

    java算法题–递归求数组中数字排列组合问题 题目:有一个数组{1,2,3},输出数组中数字的所有可能组合: 比如:123.132.213- 解题思路 通过递归不停的交换数组中的两个数(当然,肯定是有 ...

  5. Java递归求斐波那契数求猴子吃桃

    递归求斐波那契数 斐波那契数是指前两位是1,后面的数依次是其前两位的和.即1,1,2,3,5,8-给你一个 n,求其值是多少 public class recursionExercise01{//定义 ...

  6. Java 递归求阶乘

    需求:     .用递归求5的阶乘,并把结果显示在控制台输出 分析:     1.阶乘:一个正整数的阶乘是所有小于及等于该数的正整数的积,自然数n的阶乘写作n!         5!=5*4*3*2* ...

  7. 算法训练 6-1 递归求二项式系数值

    算法训练 6-1 递归求二项式系数值   问题描述 样例输入 一个满足题目要求的输入范例. 3 10 样例输出 与上面的样例输入对应的输出. 数据规模和约定 输入数据中每一个数的范围. 例:结果在in ...

  8. 递归求嵌套数组中最大值

    今早在 https://attachments.me/hirehack/public/computer.html 做题,有一题是 递归求嵌套数组中最大值: /* This challenge requ ...

  9. 非递归遍历N-ary树Java实现

    2019-03-25 14:10:51 非递归遍历二叉树的Java版本实现之前已经进行了总结,这次做的是非递归遍历多叉树的Java版本实现. 在非递归遍历二叉树的问题中我个人比较推荐的是使用双whil ...

最新文章

  1. Dockerfile多阶段构建
  2. 【Windows 逆向】CheatEngine 工具 ( CheatEngine 简介 | 使用 Lazarus 编译 CE 源码 | CheatEngine 相关文档资料 )
  3. CDN服务品质协议1
  4. 一张图看透JavaScript原型关系:__proto__(对象原型)和prototype(函数原型)
  5. tf.nn.conv2d() / tf.nn.depthwise_conv2d() 和 Batchsize效益
  6. 九个步骤让你成为PHP专家
  7. 原生 ajax查询,原生ajax啦啦啦
  8. 真正理解 git fetch, git pull 以及 FETCH_HEAD
  9. python3 super_python3的super详解
  10. 漫谈 Clustering (4): Spectral Clustering
  11. 我是明晃晃的开端(2017/4/17)
  12. xshell无法删除输入_xshell5卸载不了怎么办?xshell5软件卸载方法及无法卸载的解决方法...
  13. 建行u盾弹不出来_建行网银不自动跳出网页 建行u盾不能弹出快捷登录
  14. EBS 采购订单入库
  15. 项目沟通管理 试题分析
  16. centos 测试get请求_centos网速测试
  17. QMediaplayer详解以及简易音乐播放实现
  18. Michaelの烦恼系列漫画第二季 | 神秘的小黑屋
  19. GridView分页详解
  20. pycharm社区版跟专业版有什么区别

热门文章

  1. 软件测试人员的职业晋升之路
  2. 时间序列预测基础教程系列(14)_如何判断时间序列数据是否是平稳的(Python)
  3. 用计算机发传真,如何用电脑发网络传真?在电脑里怎么发传真?
  4. 你看到的是乱,我看到的是月亮,如是而已。
  5. 写给大数据初级开发者或准备转行大数据的人
  6. html 的函数写法,react中函数的不同写法的区别是什么?
  7. 渗透杂记-2013-07-10
  8. 公需科目2020快速学习_2021公需科目快速学习方法
  9. Linux中的tty、pty、pts与ptmx辨析
  10. 游戏开发的HelloWorld,快速入门,新手上路,使用CocosCreator+JS,flyBird(飞翔小鸟)