求取最大公约数有三种方法:##
-
短除法
把两个数一直除以它们的公约数,取它们的商继续除,直到无约数可除为止.然后把约数全部乘起来,即为最大公约数. -
欧几里德算法(辗转相除法)
在两个数中,找出大数.用大数除以小数.得到整数商和余数.然后再不断地用除数(原来的小数)除以余数.直到没有余数为止.那么除数即为最大公约数. -
《九章算术》更相减损术
用大数减小数,得到的差,与减数比大小,然后继续不断地大数减小数.直到减数等于差为止.差即为最大公约数.
@Test
public void cell(){
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个值:");
int m = sc.nextInt();
System.out.println("请输入第二个值:");
int n = sc.nextInt();
//如果
int divisor = divisor(m,n);
System.out.println(divisor);
}
public int divisor(int m,int n){
while(true){
if ((m = m % n) == 0){
return n;
}
if ((n = n % m) == 0) {
return m;
}
}
}
/**
* 两个数的积除以最大公约数,就是最小公倍数
* @param d
* @param f
* @param n
* @return
*/
public int multiple(int d,int f,int n){
// d = d/n;
// f = f/n;
// int res = n*d*f; (d/n*f/n*n) = d*f/n
int res = d*f/n;
return res;
}