1. 程式人生 > 其它 >用Java解決最大公約數與最小公倍數問題

用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);
        }
 
    }

執行結果如下:

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);
        }
 
    }

執行結果如下: