최대공약수의 사전적인 의미는 공약수 중 최댓값을 의미합니다. 두 수의 공약수를 구한 후 그중에서 가장 큰 값을 최대공약수로 구하면 됩니다.
우선 약수를 구하는 로직을 작성해보겠습니다.
export function getDivisor(value) {
if (typeof value !== "number") {
return;
}
let result = [];
for (let i = 1; i <= value; i++) {
if (value % i === 0) {
result.push(i);
}
}
return result.toString();
}
console.log(getDivisor(30)); // 1,2,3,5,6,10,15,30
console.log(getDivisor(12)); // 1,2,3,4,6,12
다음으로는 최대공약수를 구하는 로직을 작성해보겠습니다. 약수를 구하는 로직을 조금 수정하면 최대공약수를 구하는 로직을 구현할 수 있습니다.
// 최대공약수 구현 함수
export function getGCD(value1, value2) {
if (typeof value1 !== "number" || typeof value2 !== "number") {
return;
}
// value1과 value2 중 큰 값을 기준으로 값을 선택
let num = value1 > value2 ? value1 : value2;
let max;
for (let i = 1; i <= num; i++) {
if (value1 % i === 0 && value2 % i === 0) {
max = i;
}
}
return max;
}
console.log(getGCD(280, 30)); // 10
console.log(getGCD(12, 4)); // 4