두 수
n
과m
을 입력받아, 두 수의 최대공약수와 최소공배수를 반환하는 함수를 완성하라.
- 예시
n
이 3이고,m
이 12일때 solution 함수는[3, 12]
를 반환해야 한다.
function findGCD(n, m){
// 최대공약수 구하기
if (n%m === 0) {
return m;
} else {
return findGCD(m, n%m)
}
}
function solution(n, m){
let answer = [];
let GCD = findGCD(n, m); // 최대공약수
let LCM = n * m / GCD; // 최소공배수
answer.push(GCD);
answer.push(LCM);
return answer;
}
- 유클리드 호제법으로 최대공약수를 먼저 구합니다.
n > m
일때,n
을m
으로 나눈 나머지를r
이라고 합시다.
◽r = 0
인 경우 :n
과m
중 작은 수인m
이 두 수의 최대공약수 입니다.
◽r = 0
이 아닌 경우 : 작은 수m
과 나머지r
의 나머지를 구해 위 과정을 반복해줍니다.- 재귀함수로 위 과정을 반복할 수 있도록 만들어줍니다.
- 주어진 두 수인
n
과m
의 곱하고 최대공약수로 나누어 최소공배수를 구해줍니다.
유클리드 호제법을 통해 최대공약수를 간단하게 구할 수 있는 방법에 대해 익힐 수 있었다.