두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다.
두 수는 1이상 1000000이하의 자연수입니다.
유클리드 호제법을 활용하여 최대공약수를 구한다.
최소공배수는 두수의 곱 / 최대공약수 임을 활용하여 구했다.유클리드 호제법
a,b (a>b) 가 있을 때,
a % b 가 0이 아니면 a는 b 가 되고 b는 a%b 가 된다.
b 가 0이 될때까지 반복한다.
b 가 0일 때 a 값이 최대공약수가 된다.function solution(n, m) { let div; let a = n, b = m; if(a<b) [a,b] = [b,a]; while(b !== 0){ div = a%b; [a,b] = [b, div]; } return [a, n*m / a] }
재귀함수를 이용한 풀이
function greatestCommonDivisor(a, b) {return b ? greatestCommonDivisor(b, a % b) : Math.abs(a);} function leastCommonMultipleOfTwo(a, b) {return (a * b) / greatestCommonDivisor(a, b);} function gcdlcm(a, b) { return [greatestCommonDivisor(a, b),leastCommonMultipleOfTwo(a, b)]; }