您好,登錄后才能下訂單哦!
今天小編給大家分享一下JavaScript怎么求兩個(gè)數(shù)的最大公約數(shù)的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
思路:最大公因數(shù),也稱最大公約數(shù)、最大公因子,指兩個(gè)或多個(gè)整數(shù)共有約數(shù)中最大的一個(gè)。先列出其中一個(gè)數(shù)的所有因子,然后再從這些因子中最大的開始判斷是否整除另一個(gè)數(shù)。例如8和12,可以先列出8的所有因子,有,1,2,4,8,然后再從大到小,從8開始整除12,顯而易見,到4時(shí),把12整除。注意的是,寫完每一個(gè)函數(shù)時(shí),都可以進(jìn)行驗(yàn)算的。
方法一:循環(huán)取余法:
<script>
//循環(huán)求余法
//給求最大公因子封裝一個(gè)函數(shù),參數(shù)a,b為兩個(gè)求因子的數(shù)
function isyinzi(a, b) {
for (var i = a; i >= 1; i--) {
//求一個(gè)數(shù)的因子
if (a % i == 0) {
//在第一個(gè)數(shù)的因子中找到公因子,從大到小開始找。
if (b % i == 0) {
//返回最大公因子
return i;
}
}
}
}
console.log(isyinzi(3, 12))
</script>
方法二: 輾轉(zhuǎn)相處法(歐幾里得算法),用遞歸寫(自己調(diào)用自己)
<script>
//給求兩個(gè)數(shù)的最大公約數(shù)封裝一個(gè)函數(shù),參數(shù)a,b為兩個(gè)數(shù)
function isyinzi(a, b) {
//定義一個(gè)中間變量來交換a,b,a必須為兩個(gè)數(shù)最大的數(shù)
var z = 0;
if (a < b) {
z = a;
a = b;
b = z;
}
// 用遞歸來表示歐幾里得算法,其思想就是,拿除不盡的來說,
// 第一次a/b=c……d 第二次的a值就是第一次b的值,b的值
// 為第一次d的值 ,依次類推,直到d的值為0
function isdigui() {
if (a % b != 0) {
return a % b
} else return b
a = b;
return a % isdigui() //遞歸,自己調(diào)用自己,直到達(dá)到判斷的條件
}
return isdigui()
}
console.log(isyinzi(12, 8)) //調(diào)用函數(shù)
</script>
終極版: 本質(zhì)上一樣:運(yùn)用三目運(yùn)算符,
function isgy(a, b) {
return a % b == 0 ? b : isgy(b, a % b)
}
console.log(isgy(4, 2))
結(jié)果如下: 得到12,8的最大公約數(shù)為4
以上就是“JavaScript怎么求兩個(gè)數(shù)的最大公約數(shù)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。