概述
最大公约数:
方法1:求差判定法
- 如果两个数相差较大,可以用大数减去小数的若干倍,一直减到差比小数小为止,差和小数的最大公因数就是原来两个数的最大公因数。
- 例如:求36和15的最大公因数。
36-15=21,21-15=6,6和15的最大公因数是3,所以36和15的最大公约数是3。
方法2:辗转相除法
- 设有不相等的两个数,依次用大数中不断地除去小数,若余数总是除不尽它前面的一个数,直到最后的余数为一个素数,则该数为两个数的最大公因数。
- 例如:求36和15的最大公因数。
先用36/15,商2余6(6不是一个素数),再用15/6,商2余3(3是一个素数),即36和15的最大公约数是3。
最小公倍数:
方法:最大公因数法
- 因为两个数的最大公约数与最大公倍数的积等于这两个数本身的乘积,所以,用着两个数的乘积除以它们的最大公约数,就可以得到这两个数的最小公倍数。
- 例如:求25和30的最小公倍数,因为25和30的最大公因数是5,所以它们的最小公倍数是:[25,30] = 25*30/5 = 150.
案例
输入两个正整数m和n,求其最大公约数和最小公倍数。
分析: 怎么求的最大公约数?和最小公倍数?
案例代码
public class Test {
public static void main(String[] args) {
//键盘录入数据
Scanner input = new Scanner(System.in);
System.out.println("请输入第一个正整数");
int n1 = input.nextInt();
System.out.println("请输入第二个正整数");
int n2 = input.nextInt();
input.close();
//通过调用方法
//最大公因数
System.out.println("最大公因数"+Factor(n1,n2));
//求最小公倍数
System.out.println("最小公倍数"+n1*n2/Factor(n1, n2));
}
public static int Factor(int n1,int n2) {
while (true) {
if (n1 > n2) {
if (n1 % n2 != 0) {
int b1 = n1%n2;
n1 = b1;
} else {
return n2;
}
} else {
n1 = n1 + n2;
n2 = n1 - n2;
n1 = n1 - n2;
}
}
}
}
总结
在求取最大公因数和求取最小倍数时我只是列出了简单,易于理解的方法。不排除有其他方法。
希望我所写的能够帮助到您,谢谢您的了解。(作者也是初学者,分析的不足,还望指出,谢谢,共勉。)