1. 最大公约数
① 暴力穷举
暴力穷举法的思路:从两个数之间找最小的数,然后用这个数往下减,若是两个数都能够被整除,那个数就是最大公约数
int maxNumber(int m, int n) {
int temp = m > n ? n : m;
for (int i = temp; i > 0; i--) {
if (m % i == 0 && n % i == 0) {
return i;
}
}
return 0;
}
② 辗转相除法
最大公约数等于a除以b的余数c和b之间的最大公约数。
static int gcdfun(int m, int n) {
int temp;
if (n > m) {
temp = n;
n = m;
m = temp;
}
if (m % n == 0) {
return n;
}
return gcdfun(n, m % n);
}
最大公约数等于其中较小的数和两数的差的最大公约数
static int gcdfun(int m, int n) {
int temp;
if (n > m) {
temp = n;
n = m;
m = temp;
}
if (m % n == 0) {
return n;
}
return gcdfun(m - n, n);
}
2. 最小公倍数
最小公倍数 = m*n/最大公约数
public static int gcdluc(int a,int b){
int gcd=gcdfun(a, b);
int result=(a*b)/gcd;
return result;
}