최대공약수와 최소공배수 (Level 1)

문제

두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환해주는 gcdlcm 함수를 완성해 보세요.

배열의 맨 앞에 최대공약수, 그 다음 최소공배수를 넣어 반환하면 됩니다.

예를 들어 gcdlcm(3,12) 가 입력되면, [3, 12]를 반환해주면 됩니다.

풀이

function gcdlcm(a, b) {
  let gcd = 1, lcm = 1;
  for (let i = 1; i <= Math.min(a,b); i++) {
      if ((a%i == 0) && (b%i == 0)) {
        gcd = i
    }
  }
  lcm = a*b/gcd
  return [gcd, lcm]
}

// 아래는 테스트로 출력해 보기 위한 코드입니다.
console.log(gcdlcm(3,12));

s에서 p와 y가 매치되는 배열의 길이가 같을 때, p와y의 개수가 0개일 때, 나머지 경우로 나눠 조건문 생성

다른 사람의 풀이

function greatestCommonDivisor(a, b) {return b ? greatestCommonDivisor(b, a % b) : Math.abs(a);}
function leastCommonMultipleOfTwo(a, b) {return (a * b) / greatestCommonDivisor(a, b);}
function gcdlcm(a, b) {
    return [greatestCommonDivisor(a, b),leastCommonMultipleOfTwo(a, b)];
}

// 아래는 테스트로 출력해 보기 위한 코드입니다.
console.log(gcdlcm(3,12));

재귀함수를 통한 최대공약수 구하기. 상당히 신기하고 이해하는데 시간이 좀 걸렸지만, 유용하게 사용할 수도 있을듯함

그냥 첫줄만 써주면 되는거였다..

p, y 둘다 0인경우도 어짜피 0으로 동일하기 때문에 두 조건을 합쳐주고 나머지는 자동으로 false가 리턴되도록 작동함.


+ Recent posts