最大公因子-展轉相除法

求兩個數的最大公因子,使用「展轉相除法」。ide

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

簡單推導:it

由於r=a%b,因此a=bq+r,r=a-bq。class

a=bq+r,能被b,r整除的,則必定能被a整除,天然也能被a,b整除原理

r=a-bq,能被a,b整除的,則必定能夠被r整除,天然也能被b,r整除gc

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

 

代碼很簡單:di

  
  
  
  
  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.  
相關文章
相關標籤/搜索