求最大公約數和最大公倍數(Java算法)


最大公約數(最大公因數):指某幾個整數共有約數中最大的一個。

求兩個整數最大公約數主要的方法:

  • 列舉法:各自列出約數,再找出最大的公約數。
  • 素因數分解法:兩數各作素因數分解,然后取出共有的項乘起來。
  • 短除法
  • 輾轉相除法擴展版):常使用於直觀上不容易判別公約數的場合。

Java程式代碼:

以下使用輾轉相除法實現。

1 private int GCD(int a, int b) {
2         if(b==0) return a; 
3     return a % b == 0 ? b : GCD(b, a % b);
4 }

 


 

     最小公倍數,數論中的一個概念。若有一個數X,可以被另外兩個數A、B整除,且X大於(或等於)A和B,則X為A和B的公倍數。A和B的公倍數有無限個,而所有的公倍數中,最小的公倍數就叫做最小公倍數。

  Java程式代碼:

以下使用輾轉相除法求得最大公因數,之后再求最小公倍數。

1 private int GCD(int a, int b) {
2     return a % b == 0 ? b : GCD(b, a % b);
3 }
4 private int LCM(int a, int b) { 
5     return a * b / GCD(a, b);
6 }

附:輾轉相除法基於如下原理,兩個整數的最大公約數等於其中較小的數和兩數的差的最大公約數。

 

參考資料:

1.最大公約數.https://zh.wikipedia.org/wiki/%E6%9C%80%E5%A4%A7%E5%85%AC%E5%9B%A0%E6%95%B8

2.輾轉相除法.https://zh.wikipedia.org/wiki/%E8%BC%BE%E8%BD%89%E7%9B%B8%E9%99%A4%E6%B3%95

3.最小公倍數.https://zh.wikipedia.org/wiki/%E6%9C%80%E5%B0%8F%E5%85%AC%E5%80%8D%E6%95%B8

 


免責聲明!

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



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