본문 바로가기
알고리즘/기초수학

[java 백준] 실버 5/ 2609번 최대공약수와 최소공배수

by Meaning_ 2021. 9. 3.
728x90
반응형

https://www.acmicpc.net/problem/2609

 

2609번: 최대공약수와 최소공배수

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

www.acmicpc.net

 

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
33
34
35
36
37
38
39
40
41
42
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
 
public class Main {
 
    public static long gcd(long a, long b) {
        if (b == 0) {
            return a;
        } else {
            return gcd(b, a % b);
        }
    }
 
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        StringTokenizer st = new StringTokenizer(br.readLine());
        long a = Integer.parseInt(st.nextToken());
        long b = Integer.parseInt(st.nextToken());
        if (a > b) {
            long ans1 = gcd(a, b);
            long ans2 = a / ans1;
            long ans3 = b / ans1;
            System.out.println(ans1);
            System.out.println(ans1 * ans2 * ans3);
        } else if (a < b) {
            long ans1 = gcd(b, a);
            long ans2 = a / ans1;
            long ans3 = b / ans1;
            System.out.println(ans1);
            System.out.println(ans1 * ans2 * ans3);
        } else if (a == b) {
            
            System.out.println(a);
            System.out.println(a);
        }
 
    }
 
}
cs

 

유클리드 호제법을 이용해서 풀면된다.

잊지말자 최대공약수는 유클리드 호제법..!!!!

728x90
반응형

댓글