문제설명
두 수를 입력받아서 최대공약수와 최소공배수를 출력하는 간단한 문제입니다.
작동 순서
1. 두 수를 입력받고 더 큰 수를 n1, 작은 수를 n2로 지정합니다.
2. 유클리드 호제법을 이용해서 n1과 n2의 최대공약수를 구합니다.
3. 두 수의 최소공배수는 n1*n2/최소공약수인 점과 아까 구해놓은 최대공약수를 이용하여 계산하여 출력합니다.
소스코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class 백준_2609번_최대공약수와최소공배수 {
static int gcd(int a, int b){
while(b!=0){
int r=a%b;
a=b;
b=r;
}
return a;
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] input = br.readLine().split(" ");
int n1 = Math.max(Integer.parseInt(input[0]), Integer.parseInt(input[1]));
int n2 = Math.min(Integer.parseInt(input[0]), Integer.parseInt(input[1]));
int gcd=gcd(n1, n2);
System.out.println(gcd);
System.out.printf("%d",n1*(n2/gcd));
}
}
후기
유클리드 호제법만 알고 있으면 매우 간단하게 풀 수 있는 문제인것 같습니다.