1. 什么是約數(shù)
整數(shù)a除以整數(shù)b(b≠0) 除得的商正好是整數(shù)而沒有余數(shù)么夫,就將b稱為a的約數(shù)。
2. 什么是最大公約數(shù)
最大公約數(shù)指兩個(gè)或多個(gè)整數(shù)共有約數(shù)中最大的一個(gè)惜互。
求數(shù)值3和數(shù)值9的最大公約數(shù)吴菠。數(shù)值3的正約數(shù)有1, 3,數(shù)值9的正約數(shù)有1, 3, 9清寇,數(shù)值3與數(shù)值9約數(shù)交集(既存在3的約數(shù)集中喘漏,又存在9的約數(shù)集中的數(shù)的集合)為1、3华烟。則最大公約數(shù)為3翩迈。寫作gcd(3, 9) = 3。
3. 最大公約數(shù)的求法——輾轉(zhuǎn)相除法
輾轉(zhuǎn)相除法是以除數(shù)和余數(shù)反復(fù)做除法運(yùn)算盔夜,當(dāng)余數(shù)為 0 時(shí)负饲,取當(dāng)前算式除數(shù)為最大公約數(shù)的計(jì)算公式。例如喂链,求1997與615的最大公約數(shù):
1997 / 615 = 3 (余 152)
615 / 152 = 4(余7)
152 / 7 = 21(余5)
7 / 5 = 1 (余2)
5 / 2 = 2 (余1)
2 / 1 = 2 (余0)
所以返十,最大公約數(shù)為1。
4. 代碼實(shí)現(xiàn)
從上面的輾轉(zhuǎn)相除法可以看出椭微,這一輪的除數(shù)為下一輪的被除數(shù)吧慢,這一輪的余數(shù)為下一輪的除數(shù)。所以赏表,求num1與num2的最大公約數(shù)检诗,我們要做的就是:
首先判斷num2是否為0匈仗,若為0,則返回num1(最大公約數(shù)為num1)
若不為0逢慌,則遞歸調(diào)用函數(shù)悠轩,把num2作為第一個(gè)參數(shù),num1與num2的余數(shù)作為第二個(gè)參數(shù)傳進(jìn)去:
function gcd(num1,num2){
return num2===0?num1:gcd(num2,num1%num2)
}