const calcuGCD = (n, m) => {
return n % m == 0 ? m : calcuGCD(m, n % m);
}
function solution(n, m) {
let gcd = calcuGCD(n,m);
let lcm = (n * m) / gcd;
return [gcd, lcm]
}
풀이 과정
최대공약수를 구하기 위해 유클리드 호제법 을 사용하였다.
유클리드 호제법이란?
A , B 의 최대공약수를 구하는 수식 1. 만약 A 를 B 로 나눈 나머지 값이 0이면, 최대공약수는 B가 된다. 2. 그렇지 않다면 A 를 B로 대치하고, B를 A를 B로 나눈 나머지로 대치한다 3. 1번의 조건이 성립될때까지 계속 반복한다.
위의 조건을 재귀함수를 통하여 코드로 구현하면
function GCD(A,B) {
if (A % B == 0) {
return B;
}
else {
return GCD(B, A % B);
}
}
위와 같이 나타낼수 있다!
위의 코드를 기반으로 삼항연산을 적절히 섞어 구현하였고,
최소공배수는 두수를 곱하고, 최대공약수로 나눈 값이 된다!
다른사람의 코드
function gcdlcm(a, b) {
var r;
for(var ab= a*b;r = a % b;a = b, b = r){}
return [b, ab/b];
}