作為一個(gè)數(shù)學(xué)很渣的人,我表示學(xué)習(xí)算法真是有點(diǎn)困難,雖然萬事開頭難,我還是邁出了第一步,以后我盡量保證一天跟新一個(gè)算法,當(dāng)然,復(fù)雜的我會(huì)分成好幾篇來寫,盡量保持一天一更新的速率。
說起其最大公約數(shù),這個(gè)并不是什么高難度的事情。首先我跟大家說一下我的想法:
最大公約數(shù)肯定小于兩個(gè)被求數(shù),所以我們直接之求出兩個(gè)數(shù)所有的數(shù),最后比較大小就可以了。代碼如下:
int max = 0;
for (int i = 1; i <= num1; i++) {
if (num1 % i == 0 && num2 % i == 0) {
max = i;
}
}
return max;
這個(gè)算法,知道輾轉(zhuǎn)相除法之后,應(yīng)該就只剩下我用了。
下面介紹一下原理:
若 a,b 且 a = bh + r,其中 h,r,則 gcd(a,b) = gcd(b,r). --《百度百科》
至于證明大家可以常看網(wǎng)上的,這里我就不再粘貼了。
大家看一下我的實(shí)現(xiàn),雖然沒有網(wǎng)上大牛的6,但是我個(gè)人還是覺得可以的。
int gcd(int num1, int num2)
{
if (num1 % num2 == 0) {
return num2;
}
int r = num1 % num2;
return gcd(num2, r);
}
好了,開開心心完成今天的更新,安心去吃飯了。