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