求最大公約數最基本的方法就是,用一個數每次加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);}