9. 최대공약수와 최소공배수

[Problem]

두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환해주는 gcdlcm() 함수를 작성하시오.

  • 예를 들어, 3과 12의 두 숫자의 최대공약수와 최소공배수를 비교한다고 해보자.
  • 3의 약수는 1, 3이고, 12의 약수는 1, 2, 3, 4, 6, 12이다. 여기서, 최대공약수는 3이다.
  • 3의 배수는 3, 6, 9, 12, 15, 18… 이다. 12의 배수는 12, 24, 36, 48… 이다. 여기서, 최소공배수는 12이다.

[Algorithms]

[Solution]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function gcdlcm(a, b) {
let gcd = 1, lcm = 1;
const minNum = Math.min(a,b);

// 두 숫자 중에서 작은 값을 찾아, 1부터 그 작은값까지 비교하면서, 두 숫자에 대한 공약수를 찾는다.
for (let i = 1; i <= minNum; i++) {
if ((a%i == 0) && (b%i == 0)) { gcd = i }
};

// 최소공배수는 두 수의 곱에 최대공약수로 나눈 값이다.
lcm = a*b/gcd;
return [gcd, lcm]
}

console.log(gcdlcm(3,12)); // [ 3, 12 ]