Algorithm
[백준 2609번] 자바/최대공약수와 최소공배수
도도고영
2022. 9. 20. 14:15
문제
두 개의 자연수를 입력받아 최대 공약수와 최소 공배수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에는 두 개의 자연수가 주어진다. 이 둘은 10,000이하의 자연수이며 사이에 한 칸의 공백이 주어진다.
출력
첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class BJ2609 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int num1 = Integer.parseInt(st.nextToken());
int num2 = Integer.parseInt(st.nextToken());
int a = num1 > num2? num1 : num2;
int b = num1 < num2? num1 : num2;
int gcd = getGCD(a, b);
System.out.println(gcd);
System.out.println(a * b / gcd);
}
private static int getGCD(int a, int b) {
int r = a % b;
if(r == 0) { // 종료 조건
return b;
} else { // 재귀 호출
return getGCD(b, r
);
}
}
}