Java算法----递归求N个正数的最小公倍数
来源:互联网 发布:传奇装备外观算法 编辑:程序博客网 时间:2024/06/08 09:17
两个或多个整数公有的倍数叫做它们的公倍数。
两个或多个整数的公倍数里最小的那一个叫做它们的最小公倍数。
直接贴出两个正数的最小公倍数的求法,这是我在大学学习java的时候的想法,虽然性能不好,但还是可以实现的.
代码如下
/** * 求两个数的最小公倍数 * @param num1 * @param num2 * @return 两个数的最小公倍数 */ public int minNUM(int num1, int num2) { if (num1 >= num2){ //如果大数可以整除小数,则直接返回大数 if(num1%num2 == 0) return num1; //开始从2循环,判断这两个数能不能同时除以一个数 for(int i = 2;i<num2/2+1;i++){ //如果两个数有公约数 if(num1%i == 0 && num2%i == 0){ //提取公约数,讲约过的两个数继续求公约数 return i*minNUM(num1/i,num2/i); } } //没有公约数,则返回两数积 return num1*num2; }else{ return minNUM(num2,num1); } }
上面代码用到递归,递归我会在以后另发博文送上
当求N个正整数的最小公倍数,则可以把前N-1个数的最小公倍数看成一个数跟最后一个数求两个数的最小公倍数,然后通过递归算法,讲前N-1个数继续递归,直至求两个数的最小公倍数
奉上代码:
/** * 求N个正正数的最小公倍数 * @param arr N个数的数组 * @index 数组要分离的最后一位 * @return N个数的最小公倍数 */ public int minNUMS(int[] arr,int index){ //分离到数组的第一位, if(index==1){ return arr[0]; } return minNUM(minNUMS(arr,index-1),arr[index-1]); }
想不起来大学的时候是怎么处理了,临时想的,测试是可以的,就是不太好理解,上面的代码性能上差很多,
贴出来上次在算法书上看到的求两个数最小公倍数的方法:
public int minSUM(int n,int m){ if(m>n) //保证第一个数不小于第二个数 return minSUM(m,n); int temp; int num1= n,num2=m; while(n % m != 0){ temp = n % m; n =m; m =temp; } //m为最大公约数 return num1*num2/m; }
阅读全文
1 0
- Java算法----递归求N个正数的最小公倍数
- 冒泡排序算法 递归算法,求n的阶乘 求最大公约数和最小公倍数 java分解质因数
- 【算法】给定正数N,求N的阶乘N!的末位有多少个0
- 求第n个奇素数的递归算法
- Java使用递归求最小公倍数
- 求N个正整数的最大公约数和最小公倍数
- 求N的阶乘(递归算法)
- 递归算法求N的阶乘
- 递归算法求N的阶乘
- 求n数的最小公倍数
- 求N个数的最小公倍数
- 求N个数的最小公倍数
- 求N个数的最小公倍数
- 求n个数的最小公倍数
- 求N个数的最小公倍数
- 求N个数的最小公倍数
- 求n个数的最小公倍数
- 求N个数的最小公倍数
- git配合码云的使用
- NOIP2012普及组-摆花
- POJ1947 Rebuilding Roads【树形DP】
- 【JZOJ 5272】 神奇的重复序列
- NOIP2003神经网络题解
- Java算法----递归求N个正数的最小公倍数
- Java算法----冒泡排序法
- Java算法----快速排序法
- Assets.xcassets 应用
- vue的安装
- Navicat 2003-can't connect to MYSQL server on 'localhost'(10038)
- Spring编程<四>
- Postfix邮件服务器搭建之软件安装与配置
- Spring实现AOP的多种方式