最大公因子-輾轉相除法

求兩個數的最大公因子,使用“輾轉相除法”。

原理如下:若r=a%b,則gcd(a,b)=gcd(b,r)。

簡單推導:

因爲r=a%b,所以a=bq+r,r=a-bq。

a=bq+r,能被b,r整除的,則一定能被a整除,自然也能被a,b整除

r=a-bq,能被a,b整除的,則一定可以被r整除,自然也能被b,r整除

顯然gcd(a,b)=gcd(b,r)。

 

代碼很簡單:

  1. int gcd(int a,int b)  
  2. {  
  3.     int m=a,n=b;  
  4.     if (a < b)  
  5.     {  
  6.         m=b;  
  7.         n=a;  
  8.     }   
  9.     if(m%n==0)  
  10.         return b;  
  11.     else 
  12.         return gcd(n,r);  
  13.  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章