728x90
반응형
유클리드 호제법
2개의 자연수 또는 정식의 최대공약수를 구하는 알고리즘의 하나이다.
호제법이란 말은 두 수가 서로 상대방 수를 나누어서 결국 원하는 수를 얻는 알고리즘을 나타낸다.
1. 두 수 중 큰 수를 작은 수로 나누어 나머지를 구한다.
2. 작은 수를 방금 구한 나머지로 나눈다.
3. 나머지가 0이 될 때까지 반복한다.
4. 나머지가 0이 될 때 나눴던 수가 최대공약수이다.
최대공약수를 구하는 코드
private int gcd(int max, int min) {
while (max % min != 0) {
int temp = max;
max = min;
min = temp % min;
}
return min;
}
//아래와 같이 재귀 함수로 간단하게 나타낼 수도 있다.
private int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
최소공배수
private int lcm(int a, int b) {
//최소공배수 = a*b/최대공약수
return a * b / gcd(a, b);
}
private int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
728x90
반응형
'JAVA' 카테고리의 다른 글
[JAVA] JSON 데이터(object, array) (0) | 2023.03.16 |
---|---|
[Java] Optional 이란? (0) | 2023.02.26 |
JPA(Java Persistence API)란? (0) | 2023.02.16 |
[JAVA] String 문자열 replace(변경), contain(포함 여부) (0) | 2022.11.28 |
[JAVA] DATEFormat_날짜 포맷 (0) | 2022.11.18 |