[프로그래머스] 최소공약수와 최소공배수

쿼카쿼카·2022년 9월 14일
0

알고리즘

목록 보기
14/67

문제

코드

function solution(n, m) {
    let a = Math.max(n, m), b = Math.min(n, m), r = 0;
    
    if(a%b === 0) return [b, a];
    
    while(a%b !== 0) {
        r = a%b;
        a = b;
        b = r;
    }
    
    return [b, n*m/b];
}

유클리드 호제법

  • a>b라면 a%b = r(0<=r<b)일 때 a->b, b->r 이 되어 같은 과정을 반복한다.
  • r이 1이면 a와 b의 최대공약수는 1이다.
  • r이 0이면 a와 b의 최대공약수는 b다.
  • 최대공배수는 ab/r이다. 따라서 최대공약수가 1이라면 최소공배수는 ab다.

참고 사이트

profile
쿼카에요

0개의 댓글