最大公約數

求兩個整數a和b的最大公約數

計算最大公約數最常見的辦法就是輾轉相除法(歐幾里德算法)

  1. int gcd(int a,int b) 
  2.     int temp; 
  3.     while(b>0) 
  4.     { 
  5.         temp=a%b; 
  6.         a=b; 
  7.         b=temp; 
  8.     } 
  9.   
  10.     return a; 

另一種方法:

  1. int gcd(int a,int b) 
  2.     if(a<b) 
  3.     { 
  4.         return gcd(b,a); 
  5.     } 
  6.     if(b==0) 
  7.     { 
  8.         return a; 
  9.     } 
  10.     if(a&1) 
  11.     { 
  12.         if(b&1) 
  13.         { 
  14.             return gcd(b,a-b); 
  15.         } 
  16.         else 
  17.         return gcd(a,b>>1); 
  18.     } 
  19.     else 
  20.     { 
  21.         if(b&1) 
  22.         { 
  23.             return gcd(a>>1,b); 
  24.         } 
  25.         else 
  26.         { 
  27.             return gcd(a>>1,b>>1)<<1; 
  28.         } 
  29.     } 

好難懂,沒看明白是什麼原理:-(

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