一、什麼是最大公約數
最大公約數,英文為 Greatest Common Divisor(GCD),是指兩個或多個正整數公有的約數中最大的一個。
例如,12 和 18 的最大公約數是6。
在數學中,最大公約數的求解是非常常見的問題,因此有很多方法可以用來計算最大公約數。
二、求解最大公約數的方法
下面介紹幾種常見的計算最大公約數的方法。
1. 窮舉法
function gcd(a, b) {
var min = Math.min(a, b);
for (var i = min; i >= 1; i--) {
if (a % i === 0 && b % i === 0) {
return i;
}
}
}
console.log(gcd(12, 18)); // 輸出 6
窮舉法的思路是找出兩個數中的最小值,從這個最小值開始向下遍歷,找到第一個能夠同時整除 a 和 b 的數,即為最大公約數。
2. 利用歐幾里得演算法(輾轉相除法)
function gcd(a, b) {
if (b === 0) {
return a;
} else {
return gcd(b, a % b);
}
}
console.log(gcd(12, 18)); // 輸出 6
歐幾里得演算法的思路是,用小的數去除大的數,然後用被除數除以餘數,直到餘數為0,此時被除數就是最大公約數。
3. 利用更相減損術
function gcd(a, b) {
if (a === b) {
return a;
} else if (a > b) {
return gcd(a - b, b);
} else {
return gcd(a, b - a);
}
}
console.log(gcd(12, 18)); // 輸出 6
更相減損術的思路是,用大的數減去小的數,然後用得到的差和小的數繼續做差,直到兩個數相等,此時的值即為最大公約數。
三、最大公約數在演算法中的應用
最大公約數在演算法中有廣泛的應用,比如可以用最大公約數來求最小公倍數。在歐幾里得演算法中,可以優化求解多個數的最大公約數,而且最大公約數還可以用來判斷兩個數是否互質。
下面是一個使用歐幾里得演算法求解多個數的最大公約數的函數。
function gcd(nums) {
var result = nums[0];
for (var i = 1; i < nums.length; i++) {
result = gcd2(result, nums[i]);
if (result === 1) {
return 1;
}
}
return result;
}
function gcd2(a, b) {
if (b === 0) {
return a;
} else {
return gcd2(b, a % b);
}
}
console.log(gcd([12, 18, 24])); // 輸出 6
四、總結
最大公約數在數學和演算法中都有著廣泛的應用。不同的求解方法有著各自的優缺點,可以根據具體的情況選擇不同的方法來計算最大公約數。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/199944.html
微信掃一掃
支付寶掃一掃