Java50道經典習題-程序6 求最大公約數及最小公倍數


題目:輸入兩個正整數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 */

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM