본문 바로가기

Try Programs

원하는 개수의 정수들의 최소공배수 구하기(JAVA)

원하는 만큼의 개수만큼의 정수들의 최소공배수

- In JAVA -



저번 포스팅에서 원하는 수만큼의 정수들의 최대공약수를 구했다면

이번에는 최소공배수(least common multiple)를 구하는 방법 또한 알아볼 것이다.


우선 최소공배수를 구하려면 최대공약수를 먼저 알아야 한다.

어떠한 방법으로 최소공배수를 구하는지 그림으로 먼저 설명하겠다.



위의 세 수 24, 48, 8의 최소공배수를 구한다고 해보자

그럼 먼저 이 세 수들의 최대공약수를 구한다. (최대공약수 = 8)

최대공약수의 값을 얻은 다음 다음의 공식으로 최소공배수를 구할 수 있다.


즉 24*48*8 을 한 값을 ((최대공약수)^정수의 개수 - 1) 이 값으로 나눈 값이 최소공배수이다.

즉 저 예시로 보면

따라서 예제의 최소공배수의 값은 144가 되는 것이다.



그럼 위의 공식을 이용해 프로그램을 만들어 보도록 하겠다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// 이전 시간에 만든 최대공약수 구하는 프로그램으로
// 정수의 개수 num, 최대공약수 값 gdc를 얻은 상태에서
// 이어서 작성하는 코드입니다.
 
// 제곱값 반환하는 함수입니다.
static int getSquare (int gdc, int num) {
    int intSquare = gdc;
 
    for (int i = 0; i < num; i++) {
        intSquare *= intSquare;
    }
    return intSquare;
}
 
public class GetLCM {
    public static void main(String[] args) {
        // 사용자에게 입력받은 정수들의 곱을 구한다.
        int mulInteger = 1;
        for (int i = 0; i < num; i++){
            mulInteger *= arr[i];
        }
        // num - 1 : 정수의 개수-1승만큼 제곱해야 하기 때문에
        int Lcm = (mulInteger / getSquare(gdc, num - 1));
        System.out.println("정수들의 최대공약수: " +gdc);
        System.out.println("정수들의 최소공배수: " +Lcm);
    }
}
cs


이 코드는 이전시간에 최대공약수 구하기 코드에서 이어쓰는 코드이며,

정수들이 저장된 배열 : arr, 최대공약수의 값이 저장된 변수 : gdc, 정수들의 개수 : num

이러한 요소들을 생각하며 봐주길 바란다.