문제 풀기/C#

39. 최대공약수와 최소공배수

kagan-draca 2025. 1. 22. 14:22

 

위의 문제는 유클리드 호제법을 통해 최대공약수를 먼저 구하고,

 

두 수의 곱을 최대공약수로 나누는 방식으로 최소공배수를 구하면 된다.

 

유클리드 호제법은

 

 

위와 같이 큰 수에서 작은 수를 나눠 나머지를 구하고

 

큰 수를 작은 수로 교체 후, 작은 수를 나머지로 교체하여

 

큰 수에서 작은 수를 나누는 과정을 나머지가 0이 나올 때 까지 반복하면 된다.

 

using System;
using static System.Math;
public class Solution {
    public int[] solution(int n, int m) {
        int max = Math.Max(n,m);
        int min = Math.Min(n,m);
        
        while(min != 0)
        {
            int temp = max % min;
            max = min;
            min = temp;
        }
        
        return new int[] {max , n * m / max };
    }
}

'문제 풀기 > C#' 카테고리의 다른 글

41. 이상한 문자 만들  (0) 2025.01.23
40. 3진법 뒤집기  (0) 2025.01.22
38. 직사각형 별찍기  (0) 2025.01.22
37. 행렬의 덧셈(고정 다차원 배열, 가변 다차원 배열)  (0) 2025.01.21
36. 부족한 금액 계산하기  (0) 2025.01.21