[Java] 백준(Baekjoon) 2609. 최대공약수와 최소공배수
2024. 1. 22. 15:57ㆍAlgorithm/Mathmatics
https://www.acmicpc.net/problem/2609
최대공약수와 최소공배수
시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율
1 초 | 128 MB | 105985 | 61134 | 49744 | 57.880% |
문제
두 개의 자연수를 입력받아 최대 공약수와 최소 공배수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에는 두 개의 자연수가 주어진다. 이 둘은 10,000이하의 자연수이며 사이에 한 칸의 공백이 주어진다.
출력
첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다.
예제 입력 1
24 18
예제 출력 1
6
72
풀이
* 유클리드 호제법
: 두 수 ,
이 때 r은 (0 ≤ r < b) 이고, a ≥ b 이다.
이 때 a 와 b의 최대공약수를 (a, b)라고 할 때 (a, b)의 최대공약수는 (b, r)의 최대공약수와 같다.
GCD(a, b) = GCD(b, r)
* 참조
https://st-lab.tistory.com/154
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int d = gcd(a, b); // 최대공약수
System.out.println(d);
System.out.println(a * b / d);
}
// 최대공약수 재귀 방식
public static int gcd(int a, int b) {
if (b == 0)
return a;
// GCD(a, b) = GCD(b, r)이므로 (r = a % b)
return gcd(b, a % b);
}
}
'Algorithm > Mathmatics' 카테고리의 다른 글
[Java] 백준(Baekjoon) 2525. 오븐 시계 (0) | 2024.01.19 |
---|---|
[Java] 백준(Baekjoon) 18108. 1998년생인 내가 태국에서는 2541년생?! (1) | 2024.01.19 |