用Java解決最大公約數與最小公倍數問題
阿新 • • 發佈:2021-02-19
用Java解決最大公約數與最小公倍數問題
目錄
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); } }
執行結果如下: