解题思路: 先用更相减损法求出最大公约数(递归),在用公式求最小公倍数
注意事项: 母鸡
参考代码:
/* * 输入两个正整数m和n,求其最大公约数和最小公倍数。 */ public static void main(String[] args) { Scanner sc = new Scanner(System.in); int arr[] = {sc.nextInt(),sc.nextInt()}; int divisor = commonDivisor(arr[0],arr[1]); System.out.print(divisor+" "); System.out.print((arr[0]*arr[1])/divisor);//公式:两个数的积=最大公约数*最小公倍数 } //最大公约数:更相减损法 /* * 第一步:任意给定两个正整数;判断它们是否都是偶数。若是,则用2约简;若不是则执行第二步。 第二步:以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数。继续这个操作,直到所得的减数和差相等为止。 */ public static int commonDivisor(int a,int b) { int difference = 0;//记录 最大值-最小值 的结果 //判断确定 最大值 和 最小值 判断好了才能开始递归 if (a>b) { difference = subtraction(a,b); return difference==b?difference:difference; }else { difference = subtraction(b,a); return difference==a?difference:difference; } } public static int subtraction(int max,int min) { int difference = max-min;//最大最小值的差 if (min==difference) {//差于最小值相等 做为出口 return difference; } return commonDivisor(min,difference);//开始递归(因为不能确定差就一定大于或者小于min才把结果放回去再做一次判断) }
0.0分
5 人评分
简单的a+b (C语言代码)浏览:676 |
2005年春浙江省计算机等级考试二级C 编程题(3) (C语言代码)浏览:417 |
九宫重排 (C++代码)浏览:2195 |
C语言程序设计教程(第三版)课后习题6.10 (C语言代码)浏览:900 |
2005年春浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:637 |
文科生的悲哀 (C语言代码)浏览:1538 |
C二级辅导-等差数列 (C语言代码)浏览:806 |
C二级辅导-统计字符 (C语言代码)浏览:695 |
上车人数 (C语言代码)浏览:753 |
杨辉三角 (C语言代码)浏览:734 |