最全與最容易懂的Java求最大公約數與最小公倍數
阿新 • • 發佈:2020-12-19
目錄
Java
主方法
public static void main(String[] args){ int m,n; Scanner sc = new Scanner(System.in); m = sc.nextInt(); n = sc.nextInt(); System.out.println("最大公約數是:" + mcd(m,n)); System.out.println("最大公約數是:" + mcd1(m,n)); System.out.println("最大公約數是:" + mcd2(m,n)); System.out.println("最大公約數是:" + mcd3(m,n)); System.out.println("最小公倍數是:" + lcm(m,n)); System.out.println("最小公倍數是:" + lcm1(m,n)); }
最大公約數
方法一:
//輾轉相除法
public static int mcd(int m, int n){
while(m % n != 0){
int tmp = m % n;
m = n;
n = tmp;
}
return n;
}
方法二:
//輾轉相除遞迴法 public static int mcd1(int m, int n){ if(n == 0){ return m; }else{ return mcd1(n,m % n); } }
方法三:
//輾轉相除最簡潔寫法
public static int mcd2(int m, int n){
return m % n == 0 ? n : mcd2(n,m % n);
}
方法四:
//窮舉法 最大公約數肯定是小於或等於兩個數中最小的那個,所以挨個除就行了 public static int mcd3(int m, int n){ int min = m > n ? n : m; while(min != 0){ if(m % min == 0 && n % min == 0){ break; } min--; } return min; }
最小公倍數
方法一:
//窮舉法 與最小公倍數相反 最大公因數大於等於最大的那個數
public static int lcm(int m,int n){
int max = m > n ? m : n;
while(max != 0){
if(max % m == 0 && max % n == 0){
break;
}
max++;
}
return max;
}
方法二:
//輾轉相除法
public static int lcm1(int m, int n){
int m1 = m;
int n1 = n;
while(m % n != 0){
int tmp = m % n;
m = n;
n = tmp;
}
return m1*n1 / n;
}
執行結果