输入2个整数,求最大公约数和最小公倍数
关于最大公约数的算法,古希腊数学家欧几里得已经在2200年前给出我们算法公式,我们直接拿来用就可以了。
欧几里得算法也被称为辗转相除法,用来求最大公约数:用较大数除以较小数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。如果是求两个数的最大公约数,那么最后的除数就是这两个数的最大公约数。
- 最大公约数=欧几里得算法(辗转相除法)
- 最小公倍数=两个整数的乘积 除以 最大公约数
public static void main(String[] args) {
//输入2个整数,求最小公倍数最大公约数
Scanner s = new Scanner(System.in);
System.out.println("请您分别输入2个整数:");
int a =s.nextInt();
int b =s.nextInt();
//先把a和b的值分别赋值给i和j
int i=a;
int j=b;
int m,n;
//用a/b(大数除以小数)
if(a<b){//交换位置
m=a;
a=b;
b=m;
}
while(b!=0){// 第一除数/第一余数 ...依次类推
n=a%b;
a=b;
b=n;
}
//因为b的值最终为0,while循环结束,所以需要条件结束之前(b为0的上一次循环)把b的值赋给a
System.out.println(i+"和"+j+"的最大公约数为:"+a);
//最小公倍数=两个整数的乘积 除以 最大公约数
System.out.println(i+"和"+j+"的最小公被数为:"+i*j/a);
}