Post

최대공약수와최소공배수

https://school.programmers.co.kr/learn/courses/30/lessons/12940

📔 문제 설명

두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다.

💡 입출력 예

nmresult
312[3, 12]
25[1, 10]

💻내가 작성한 코드

  • n 이랑 m 나머지 0이 되는 index 찾기 = 최대공약수
  • n * m / 최대공약수 = 최소공배수
1
2
3
4
5
6
7
8
9
10
11
function solution(n, m) {
    let max ;
    for(let i = Math.max(n,m); i >0; i--){
       if(n % i === 0 && m % i === 0){
            max = i;
            break;
        }
    }
    const min = (n * m) / max
    return= [max, min]
}

💻다른 사람 코드

  • r은 n & m 의 나머지
  • 조건식 : r = n % m
  • 증감식 : a = b, b = r
1
2
3
4
5
function gcdlcm(a, b) {
  var r;
  for (var ab = a * b; (r = a % b); a = b, b = r) {}
  return [b, ab / b];
}
1
2
3
4
5
6
// 실행코드
a=2 , b=5
ab=10, a=2 , b=5, r=2
ab=10, a=5, b=2, r=1
ab=10, a=2, b=1, r=0
return [1, 10]
This post is licensed under CC BY 4.0 by the author.