求兩個數的最大公因子,使用「展轉相除法」。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
- int gcd(int a,int b)
- {
- int m=a,n=b;
- if (a < b)
- {
- m=b;
- n=a;
- }
- if(m%n==0)
- return b;
- else
- return gcd(n,r);
- }