두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다.
function solution(n, m) {
let gcd = 1;
let lcm = 1;
for(i=2;i<=Math.min(n,m);i++) {
if(n % i ==0 && m % i ==0) {
gcd = i;
}
}
lcm = (n * m) / gcd
return [gcd,lcm];
}
최소공약수와 최대공배수 문제이다.
최소공약수를 알면 최대공배수는 쉽게 풀수있다.
최대공배수는 각 두수의 곱 / 최대공약수 이기 때문이다.
최대공약수의 정의는 두 개 이상의 수의 공통된 약수 중에서 가장 큰 수를 말한다.
예를 들어 12와 20의 약수는
12 (1,2,3,4,6,12)
20 (1,2,4,5,10,20)
이고 여기서 최대공약수는 4가 된다.
최대공약수는 각 수의 나머지가 0 이면서 동시에 같은 수로 나누어야 한다는 사실을 알게 되었다. 그래서 아래와 같은 코드를 작성하였다.
if(n % i ==0 && m % i ==0) {
gcd = i;
}