求m和n的最大公約數和最小公倍數


題目:輸入兩個正整數m和n,求其最大公約數和最小公倍數。 

做這道題時,特意去查看了一下什么是最大公約數和最小公倍數.

后來直接去看了求解的思想,相信到企業中不會要求你閉門造車,若已有先例,可以研究之后拿來使用.

具體的思想是這樣的:

  1>使兩個數,m大於n

  2>m%n 若結果為0,那么n就是最大公約數

       若結果不為0,那么就要讓n%(m%n).

寫到這邊就會發現,這又是一道關於遞歸的思想的問題.每次的運算都和上一次的運算的結果有關.

因此代碼如下.

 1 //遞歸算法
 2     public static int maxCommonDivisor(int m, int n){
 3         if(m < n){
 4             int temp = m;
 5             m = n;
 6             n = temp;
 7         }
 8         if(m % n == 0){
 9             return n;
10         }else{
11             return maxCommonDivisor(n, m%n);
12         }
13         
14     }

 

 下面的這一種寫法,和遞歸的思想實質上是一致的.采用了循環的形式.

 1     //循環法
 2     public static int maxCommonDivisor2(int m, int n){
 3         if(m < n){
 4             int temp = m;
 5             m = n;
 6             n = temp;
 7         }
 8         while(m % n != 0){
 9             int temp = m % n;
10             m = n;
11             n = temp;
12         }
13         return n;
14     }

 

最后,在求得最大公約數的基礎上,最小公倍數很容易求得.

是m和n的乘積再除以最大公約數

1     public static int minCommonMultiple(int m, int n){
2         return m*n/maxCommonDivisor2(m, n);
3         
4     }

 

 

大神真的有很多,以上的代碼寫的很規范,包括命名(不是我起的),很專業.對於我的學習很有幫助.


免責聲明!

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



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