유클리드 호제법을 이용하여 최대공약수 최소공배수를 구해보자.
function solution(n, m) {
const gcd = (a,b) => a%b === 0 ? b : gcd(b,a%b);
const lcm = (a,b) => a*b / gcd(a,b);
return [gcd(n,m), lcm(n,m)];
}
최소공배수는 최대공약수의 값으로 인자 2개 곱한 값을 나눠주기만 하면 된다. 따라서 코드가 어렵지는 않다. 하지만 최대공약수 코드는 외우는 것이 좋다고 본다...
a를 b로 나눈 나머지 값이 0이면 b가 최대공약수가 되는 것이고, 그것이 아니라면 재귀함수로 인자를 b와 a%b한 값으로 호출하면 된다.
간단하지만 외우면 두고두고 많이 쓰일 알고리즘이다.