[Programmers] JavaScript 최대공약수와 최소공배수

Kim Joy·2023년 5월 8일
2

Programmers 장인

목록 보기
57/67

JavaScript 최대공약수와 최소공배수

문제 설명

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

입출력 예

코드

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

최소공약수와 최대공배수 문제이다.
최소공약수를 알면 최대공배수는 쉽게 풀수있다.
최대공배수는 각 두수의 곱 / 최대공약수 이기 때문이다.

최대공약수의 정의는 두 개 이상의 수의 공통된 약수 중에서 가장 큰 수를 말한다.
예를 들어 12와 20의 약수는
12 (1,2,3,4,6,12)
20 (1,2,4,5,10,20)
이고 여기서 최대공약수는 4가 된다.

최대공약수는 각 수의 나머지가 0 이면서 동시에 같은 수로 나누어야 한다는 사실을 알게 되었다. 그래서 아래와 같은 코드를 작성하였다.

if(n % i ==0 && m % i ==0) {
            gcd = i;
        }
profile
코딩어린이 성장중

0개의 댓글