// 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다.
// 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로
// solution(3, 12)는 [3, 12]를 반환해야 합니다.
function solution(n, m) {
//최대공약수: 두 수의 공통되는 약수 중에서 가장 큰수
//최대공배수: 두 수의 공통되는 배수 중에서 가장 작은수
//최대공약수 구하기
let max = 0;
for (let i = 1; i <= m; i++) {
if (n % i === 0 && m % i === 0) {
max = i;
}
}
//최소공배수 구하기
let min = 0; //공배수중에서 제일 작은 수만 저장
for (let i = m; i <= n * m; i += m) {
if (i % n === 0 && i % m === 0) {
min = i;
break; //하나찾자마자 break
}
}
return [max, min];
}
//
function solution(n, m) {
//유클리드 호제법
//최대 공약수를 구하기 위한 알고리즘 (공식)
//a를 b로 나눴을 때 (a가 b보다 클 경우) === 큰수에서 작은 수를 나눴을 떄
//나머지 값이 0이 되면, 작은 수 (b)가 최대공약수가 된다.
//나머지 값이 0이 되지 않으면, 작은 수 (b)가 큰수 (a)가되고
//나머지 값이 작은 수가 (b)가 된다.
//반복했을 때에 나머지 값이 0이 나오면, 작은 수 (b)가 최대공약수가 된다.;;
let a = m; //큰 수
let b = n; //작은 수
let r = 0; //큰 수를 작은 수로 나웠을 때의 나머지 값
while (a % b > 0) {
r = a % b; //큰 수에서 작은 수를 나눈 나머지 값을 저장
a = b; //큰 수를 나눴을 떄의 작은 수를 가져온다.
b = r; //작은 수에는 나머지 값을 가져온다.
}
//최소 공배수는 두수를 곱한 수에 최대공약수를 나눠준 몫의 값
return [b, (n * m) / b];
}
function solution(n, m) {
var answer = [];
let big = 0;
let least = 0;
if (n % m === 0 || m % n === 0) {
big = Math.min(n, m);
least = Math.max(n, m);
console.log(big, least);
} else {
for (let i = 1; i < Math.max(n, m); i++) {
if (n % i === 0 && m % i === 0) {
big = i;
}
}
least = (n * m) / big;
}
answer.push(big, least);
return answer;
}