题目:
输入2个正整数m,n,求其最大公约数和最小公倍数。
思路:
方法一:辗转相除
方法二:暴力计算
比较输入的两个数m和n谁更小,从较小者开始往下寻找第一个能被m和n同时整除的数,该数即为最大公约数。
由数学定理可知,最小公倍数 = 两数乘积 / 最大公约数
实现:
public class Divisor {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner reader = new Scanner(System.in);
int m = reader.nextInt();
int n = reader.nextInt();
//方法一:辗转相除法
// int fac = m*n;
// int r =0;
// if(m<n)
// {
// int t = n;
// n = m;
// m = t;
// }
// while(n != 0)
// {
// r = m%n;
// m = n;
// n = r;
// }
//方法二:暴力计算
int t = m>n?n:m;
int i;
for(i = t;t>=1;i--)
{
if(m%i==0&&n%i==0)
return;
}
System.out.println("最大公约数为"+i);
System.out.println("最小公倍数为"+m*n/i);
}
}