[Java] 최대공약수, 최소공배수
1. 변수명 명명법
- gcd(Greatest Common Divisor) : 최대공약수
- lcm(Lease Common Multiple): 최소공배수
2. 최대공약수(GCD) 구하는 대표 메서드
2.1 유클리드 호제법 (재귀 버전)
public int gcd(int a, int b) {
if (b == 0) return a;
return gcd(b, a % b);
}
2.2 반복문 버전
public int gcd(int a, int b) {
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}
3. 최소공배수(LCM) 구하는 공식과 메서드
- 공식 : lcm(a,b) = (a * b) / gcd(a, b)
- 최소공배수를 구하려면 최대공약수를 먼저 구해야 함
public int lcm(int a, int b) {
return (a * b) / gcd(a, b);
}
4. 자바 내장 메서드 (Java 8 이상)
Java 8 이상부터는 java.math.BigInteger 클래스에 GCD 메서드가 있어서 큰 수 계산에 유용하다.
import java.math.BigInteger;
BigInteger a = BigInteger.valueOf(12);
BigInteger b = BigInteger.valueOf(18);
BigInteger gcd = a.gcd(b);
참고 자료 : chatGPT