백준 - Java

[백준 - 2609][Java] 최대공약수와 최소공배수

SeongJo 2022. 5. 25. 20:52
반응형

 

이 포스팅은 자바 8버전으로 풀이가 됐습니다.

 


 

문제

두 개의 자연수를 입력받아 최대 공약수와 최소 공배수를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에는 두 개의 자연수가 주어진다. 이 둘은 10,000이하의 자연수이며 사이에 한 칸의 공백이 주어진다.

출력

첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다.

코드

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
28
29
30
31
32
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
// 2609번
public class Main {
    public static void main(String[] args)throws IOException {
        try {
            BufferedReader rd = new BufferedReader(new InputStreamReader (System.in));
            
            String text[] = rd.readLine().split(" ");
            
            int A = Integer.parseInt(text[0]);
            int B = Integer.parseInt(text[1]);
 
            for(int i=A+B;i>0;i--) {
                if(A%i==0 && B%i==0) {
                    System.out.println(i);
                    break;
                }
            }
            for(int i=A;i<Math.pow(10000,2);i++) {
                if(i%A==0 && i%B==0) {
                    System.out.println(i);
                    break;
                }
            }
        }
        catch(IOException e) {
            System.out.println("error");
        }
    }
}
 
 

풀이

최대 공약수와 최소 공배수를 구하는 문제이다.

최대 공약수는 두 수 이상의 공약수가 각각 적어도 0개 이상의 정수를 가진 공약수 중. 최대인 수를 가리키는 말이다.

최소 공배수는 두 수 이상의 수들이 공통되는 배수를 의미한다.

 

15번 ~ 19번 라인에서 최대 공약수를 구하기 위해서 입력받은 A 값과 B 값이 모두 나눠지는 가장 큰 수의 공약수를 찾아낸다.

21번 ~ 25번 라인에서 최소 공배수를 찾아내기 위해서 입력받은 A 값과 B 값의 공통되는 배수를 찾아내기 위해서 낮은 값부터 공통되는 분수를 찾아낸 경우 break 문을 활용해서 멈춰준다.

 


짧은 포스팅 읽어주셔서 감사드립니다. 오타나 문제가 있는 경우 댓글 부탁드리겠습니다.

감사합니다. 다음 포스팅 때 뵙겠습니다.

반응형