天天看點

用Java解決最大公約數與最小公倍數問題用Java解決最大公約數與最小公倍數問題

用Java解決最大公約數與最小公倍數問題

目錄

1.最大公約數

2.最小公倍數

1.最大公約數

題目:求兩個正整數的最大公約數。

解題思路:最大公約數我們可以利用循環的算法來計算。意思就是說,比如有兩個數字a,b(a>b),它們的最大公約數肯定不會大于其中最小的那一個,即不會大于b。是以我們可以利用循環算法不斷地對數字a,b從1-b進行整除,看結果是否同時為0,直到找到那個最大的數字可以結果同時為0的情況。

方法一:

注意事項:   

    a.循環算法是從1~b進行整除的,不能将此變量設定為從0開始,否則運作時會報錯(by zero);

    b.其實在程式設計時我們不需要一次性将所需變量全部設定出來,可以根據思路一邊寫一遍設定,防止思維混亂。

是以我們可得到如下代碼:

import java.util.Scanner;

public class TestDome {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt();
        Scanner scanner1 = new Scanner(System.in);
        int b = scanner1.nextInt();

        int c = 0;
        int i = 1;
        int result=0;
        if(a>b){
            c=b;
        }else{
            c=a;
        }

        while(i<=c){
            if(a % i ==0 && b % i ==0){
                result = i;
            }
            i++;
        }
        System.out.println("最大公約數為" + result);
        }
 
    }

           

運作結果如下:

用Java解決最大公約數與最小公倍數問題用Java解決最大公約數與最小公倍數問題

方法二: 

解題思路:輾轉相除法。舉例:12 和18        18 和 6

                  步驟一:先判斷a除以b是否為0,要是為0,結果直接輸出為b(也就是a,b兩個中最小的數字)。

                  步驟二:如果不是0,則用除數作為新的被除數,餘數作為新的除數,直到相除結果為0為止。(是以這裡需要用到循環)

                               也就是将b賦給a,将餘數c賦給b,直到相除結果為0為止,結果直接輸出為b。

 是以我們可得到如下代碼:

import java.util.Scanner;

public class TestDome {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt();
        Scanner scanner1 = new Scanner(System.in);
        int b = scanner1.nextInt();

        int c =0;
        while(a % b != 0){
            c =a%b;
            a =b;
            b =c;
        }
        System.out.println("最大公約數:"+ b);


    }
}
           

運作結果如下:

用Java解決最大公約數與最小公倍數問題用Java解決最大公約數與最小公倍數問題

2.最小公倍數

題目:求兩個正整數的最小公倍數。

解題思路:最小公倍數 = 兩數的乘積 / 最大公約數。

是以我們可得到如下代碼:

import java.util.Scanner;

public class TestDome {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt();
        Scanner scanner1 = new Scanner(System.in);
        int b = scanner1.nextInt();

        int c = 0;
        int i = 1;
        int result=0;
        if(a>b){
            c=b;
        }else{
            c=a;
        }

        while(i<=c){
            if(a % i ==0 && b % i ==0){
                result = i;
            }
            i++;
        }
        int result1=a* b/ result;
        System.out.println("最小公倍數為" + result1);
        }
 
    }
           

運作結果如下: 

用Java解決最大公約數與最小公倍數問題用Java解決最大公約數與最小公倍數問題