백준
백준 2609 최대공약수와 최소공배수(Java)
Park DJ
2023. 1. 14. 02:54
https://www.acmicpc.net/problem/2609
2609번: 최대공약수와 최소공배수
첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다.
www.acmicpc.net
해석 및 팁
이 문제를 풀때 for문을 통해서도 풀수있지만 백준에서는 시간초과로 인해 틀리게 됩니다. 간단하게 푸는 방법은 BigInteger 클래스에서 사용가능한 gcd를 사용하면 됩니다. 두 수를 입력받은후 BigInteger형식으로 변경시켜주고 gcd함수를 사용한후 Int형으로 바꿔주면 최대공약수가 나오게 됩니다. 두 값의 곱은 최대공약수와 최소공배수의 곱과 같으므로 두 값의 곱에 최대공약수를 나누어주면 최소공배수가 나옵니다.
Java 코드
import java.util.Scanner;
import java.math.BigInteger; //BingInteger을 사용하기위해 import 해준다
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
BigInteger a1 = BigInteger.valueOf(a); //BigInteger타입으로 변환
BigInteger b1 = BigInteger.valueOf(b);
int g = a1.gcd(b1).intValue(); //int 형으로 변환시켜준다
int l = a * b / g;
System.out.println(g);
System.out.println(l);
}
}