유클리드 호제법
두 수의 최대 공약수를 구하는 알고리즘
1. 큰 수를 작은 수로 나누는 MOD 연산 수행
2. 앞 단계에서의 작은 수와 MOD 연산 결괏값(나머지)로 MOD 연산 수행
3. 나머지가 0이 되는 순간의 작은 수를 최대 공약수로 선택
예) 270과 192의 최대 공약수를 유클리드 호제법을 사용해 찾아보자.

-> 재귀의 형태로 구현하여 사용한다.
백준 온라인저지 1934번
import java.util.Scanner;
public class P1934_최소공배수구하기 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
for (int i = 0; i < num; i++) {
int A = sc.nextInt();
int B = sc.nextInt();
/**
* A와 B가 주어졌을 때 최소공배수는
* "A * B / 최대공약수"로 구할 수 있음
* -> 유클리드 호제법을 이용해 최대공약수를 구한 후 두 수의 곱에서 최대공약수를 나눠주면 됨
*/
int gcdNum = gcd(A, B); // 최대공약수
int result = A * B / gcdNum;
System.out.println(result);
}
}
private static int gcd(int A, int B) {
if(B == 0) {
return A;
} else {
return gcd(B, A % B);
}
}
}'알고리즘' 카테고리의 다른 글
| 그래프를 구현하는 3가지 방법 : 에지 리스트 / 인접 행렬 / 인접 리스트 (1) | 2024.11.11 |
|---|---|
| 정수론 : 확장 유클리드 호제법 (1) | 2024.11.03 |
| 정수론 : 오일러 피 (2) | 2024.10.27 |
| 소수 구하기 : 에라토스테네스의 체 원리 (0) | 2024.10.20 |
| Comparator와 Comparable (0) | 2024.10.14 |