[Programmers] 최대공약수, 최소공배수 구하기

Innes·2024년 9월 16일
0

Algorithm

목록 보기
1/2
post-thumbnail

최대공약수 구하기

  • 약수는 num / 2 보다 클 수 없다.
    -> for문으로 돌면서 num % i === 0 이 되는 i를 찾으면 된다.
    (i는 num / 2 까지만 돌아보면 됨)
  • 두 수 num1, num2 의 최대공약수를 구하려면
    • 두 수 중 작은 수를 알아야 함 (Math.min(num1, num2))
    • i는 두 수 중 작은 수부터 시작한다.
      ( '최대' 공약수를 구하는 것이기 때문에 가장 큰 값부터 내려가면서 num % i === 0 을 만족시키는 i를 구할 예정 )

코드

let gcd = 1;

// i를 Math.min(a, b)에서 시작하고, i--로 하나씩 내려가면서 확인하기
for(let i = Math.min(a, b); i >= 1; i--){
        if(a % i === 0 && b % i === 0){
            gcd = i;
            break;
          // 최대공약수를 gcd에 넣어주고 for문은 break로 종료한다.
        } 
    }

최소공배수 구하기

  • num1과 num2의 최소공배수 구하기 : num1 * num2 / 최대공약수 = 최소공배수

    코드를 첨부할 필요도 없는 매우 간단한 방법으로 최소공배수를
    구할 수 있었다..!


문제 : 최대공약수와 최소공배수

풀이

const solution = (a, b) => {
    let answer = [];
    
    for(let i = Math.min(a, b); i >= 1; i--){
        if(a % i === 0 && b % i === 0){
            answer.push(i)
            answer.push(a * b / i)
            break;
        } 
    }
    
    return answer;
}
profile
무서운 속도로 흡수하는 스폰지 개발자 🧽

0개의 댓글