題目:輸入兩個正整數m和n,求其最大公約數和最小公倍數。
分析:用輾轉相除法求最大公約數
兩個數的最大公約數:設兩個數分別為n和m,(n>=m);用定義一個變量i,使用for循環,將i的取值從m一直到1,用i分別去取模於m和n,當兩個數被取模的結果都是0時,返回此時變量i的值,此時i的值即為最大公約數
兩個數的最小公倍數=兩個數之積/最大公約數
1 import java.util.*; 2 public class Prog6 { 3 public static void main(String[] args) { 4 Scanner scan = new Scanner(System.in);// 接收控制台輸入的信息 5 System.out.print("請輸入第一個整數:"); 6 int num1 = scan.nextInt(); // 取出控制台輸入的信息 7 System.out.print("請輸入第二個整數:"); 8 int num2 = scan.nextInt(); // 取出控制台輸入的信息 9 scan.close(); 10 11 System.out.println("最大公約數是:"+maxCommonDivisor(num1, num2));// 調用maxCommonDivisor()方法 12 System.out.println("最小公倍數是:"+minCommonMultiple(num1, num2));// 調用minCommonMultiple()方法 13 } 14 15 //求最小公倍數 16 public static int minCommonMultiple(int m,int n) { 17 return m*n/maxCommonDivisor(m,n); 18 } 19 20 //求最大公約數 21 public static int maxCommonDivisor(int m,int n) { 22 //判斷輸入的兩個數的大小,保證大的數始終放在第一個參數位置 23 if(m<n) { 24 int temp=m; 25 m=n; 26 n=temp; 27 } 28 29 int i=n;//從大到小,第一次求出來的公約數就是最大公約數,如果不能同時整除兩個數,則不是公約數 30 while((n%i!=0)||(m%i!=0)) 31 { 32 i--; 33 } 34 return i; 35 } 36 } 37 /*運行結果 38 請輸入第一個整數:6 39 請輸入第二個整數:8 40 最大公約數是:2 41 最小公倍數是:24 42 */