두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다.
유클리드 호제법(-互除法, Euclidean algorithm) 또는 유클리드 알고리즘은 2개의 자연> 수 또는 정식(整式)의 최대공약수를 구하는 알고리즘의 하나이다. 2개의 자연수(또는 정식)
a, b에 대해서 a를 b로 나눈 나머지를 r이라 하면(단, a>b), a와 b의 최대공약수는 b와 > r의 최대공약수와 같다. 이 성질에 따라, b를 r로 나눈 나머지 r'를 구하고, 다시 r을
r'로 나눈 나머지를 구하는 과정을 반복하여 나머지가 0이 되었을 때 나누는 수가 a와 b의 > > 최대공약수이다.
최소공배수는 두 수를 곱한 값을 최대공약수로 나누면 된다.
function solution(n, m) {
let highNumber = Math.max(n, m);
let lowNumber = Math.min(n, m);
let initialization = 0;
let divisor;
let multiple;
while (n !== 0) {
initialization = m % n;
m = n;
n = initialization;
divisor = m;
}
multiple = lowNumber * highNumber / divisor;
return [divisor, multiple];
}
문제 출처: 프로그래머스
참조: 위키백과, 우리 모두의 백과사전