最大公因子-展转相除法

求两个数的最大公因子,使用“展转相除法”。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.  
相关文章
相关标签/搜索