我的編程學習日誌(12)--求最大公約數,最小公倍數

求最大公約數最基本的方法就是,用一個數每次加1,除這兩個數。

最小公倍數就是兩個數除以最大公約數的商相乘,再乘以最大公約數(a/gcd*b/gcd*gcd

化簡以後就是a*b/gcd,

但在編程中,a*b很可能會超出範圍,所以我們要先除再乘,即:a/gcd*b

 

代碼:

int a=1,b=2,i=1,gcd,lcm;

for(;i<=(a<b?a:b);i++)

if(a%i==0&&b%i==0

gcd=i;

lcm= a/gcd*b;


 

 

最大公約數還有一種做法就是輾轉相除法,

先用兩個數中大的除以小的求餘數,

c=a%b;

如果c不爲0,

a=b;b=c;

繼續c=a%b

直到c=0,最大公約數就是此時的b

 

我們可以用遞歸快速的完成這個過程

代碼:

int gcd(int a,int b)

{return !b?a:gcd(b,a%b);}


 

 

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