프로그래머스 > 코딩테스트 연습 > 최대공약수와 최소공배수

hyeonyohwan·2021년 4월 18일
0

function solution(n, m) {
    var answer = [];
    
    const gcd = (a, b) => a % b === 0 ? b : gcd(b, a % b);
    const lcm = (a, b) => a * b / gcd(a, b);
    
    answer[0] = gcd(n,m);
    answer[1] = lcm(n,m);
    return answer;
}

이 문제는 최대공약수만 구하면 최소공배수는 쉽게 구할 수 있는 문제이다.
최대공약수를 구하는 데에는 유클리드 호제법을 이용하였다.

유클리드 호제법

2개의 자연수 a, b에 대해서 a를 b로 나눈 나머지를 r이라 하면(단, a>b) a와 b의 최대공약수는 b와 r의 최대공약수와 같다.
이 성질에 따라 b를 r로 나눈 나머지 r'를 구하고 다시 r을 r'로 나눈 나머지를 구하는 과정을 반복하여 나머지가 0이 되었을 때 나누는 수가 a와 b의 최대공약수이다.

profile
웹 프론트엔드 개발자입니다.

0개의 댓글