输入两个正整数m和n,求其最大公约数和最小公倍数

题目: 输入两个正整数 m和n,求其最大公约数和最小公倍数。
程序分析:
A: 两个数求最大公约数,可以用辗转相除法。始终用较大数(被除数)除以较小数(除数),然后用除数代替较大数(被除数),余数代替较小数(除数),代替完后继续让新的被除数除以除数。直到相除余数为0时。最后的除数就是最大公约数。
B: 两个数的最小公倍数则是两个数的乘积除以这两个数的最大公约数即可。
举例说明: 求36和8的最大公约数?
第一步:36 % 8 = 4
第二步:8 % 4 = 0 (将上一步的除数当做被除数,余数当做除数)
此时余数为0了,所以36和8的最大公约数是4
代码:
import org.junit.Test;

public class HighestCommonDivisor {
	//求最大公约数和最小公倍数的方法
	public void getHighestCommonDivisor(int a , int b) {
		//记录结果
		StringBuffer result = new StringBuffer();
		result.append(a).append("和").append(b);
		//记录最大公约数的变量
		int highestCommonDivisor = 1;
		//记录最小公倍数的变量
		int leastCommonMultiple = a * b;
		//要求最大公约数,需要保证a > b
		if(a < b) {
			int temp = a;
			a = b;
			b = temp;
		}
		while(0 != b) {
			int temp = a % b;
			a = b;
			b = temp;
		}
		
		highestCommonDivisor = a;
		leastCommonMultiple /= a;
		
		result.append(":最大公约数是").append(highestCommonDivisor).append(",最小公倍数是").append(leastCommonMultiple);
		System.out.println(result.toString());
	}
	
	//测试方法
	@Test
	public void test() {
		getHighestCommonDivisor(36,9);	//--->36和9:最大公约数是9,最小公倍数是36
		getHighestCommonDivisor(15, 20);//--->15和20:最大公约数是5,最小公倍数是60
		getHighestCommonDivisor(3 , 5);//最大公约数是1,最小公倍数是15
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值