알고리즘

유클리드 호제법(Euclidean Algorithm)

Slow Motion~ 2023. 2. 8. 18:52
728x90

유클리드 호제법(Euclidean Algorithm)은 두 정수 a, b 의 최대 공약수를 구하는 알고리즘이다.

 

두 정수 a, b의 최대 공약수는 a를 b로 나눈 나머지 r을 구한 후, b를 r로 나눈 나머지를 구하는 과정을 반복하여 나머지가 0이 되는 경우의 나머지를 최대 공약수로 간주한다.

 

과정을 수식으로 표현하면 a % b = r 이면 b % r = s를 계산하여 나머지가 0이 될 때 까지 반복한다.

 

예를 들어 a = 30, b 12일 경우 30 % 12 = 6, 12 % 6 = 0 이 되므로 6이 최대 공약수다.

 

JAVA로 표현하면 이렇게 표현할 수 있다.

int gcd(int a, int b){
	if(b==0) {
    	return a;
        }
    else{
    	return gcd(b,a%b);
        }
 }

 이를 이용해 최소 공배수 또한 구할 수 있다.

int lcm(int a, int b){
	return a*b / gcd(a, b);
}