이것저것

유클리드 호제법 본문

Algorithm

유클리드 호제법

nays111 2021. 1. 7. 00:57

최대공약수(혹은 최소공배수)를 구할때 유클리드 호제법을 사용하면 간단하다.

 

a를 b로 나눈 나머지를 r이라고 했을때 GCD(a,b) = GCD(b,r) 과 같다.

r=0 이면 그 때, b가 최대 공약수이다.

 

//재귀함수를 사용하여 구현한 유클리드 호제법
int GCD(int a,int b){
	if(b==0){
		return a;
	}else{
		return GCD(b,a%b);
	}
}

 

 

세 수의 최대공약수는 다음과 같이 구할 수 있다.

 

GCD(a,b,c) = GCD(GCD(a,b),c)

 

네 수, N개의 숫자도 위와 같은 식으로 계속해서 구할 수 있다.

 


  • 최소공배수는 줄여서 LCM이라고 한다.
  • 두 수의 최소공배수는 두 수의 공통된 배수 중에서 가장 작은 정수
  • 최소공배수는 GCD 를 응용해서 구할 수 있다.

G = GCD(A,B)

  • 두 수의 a,b의 최대공약수를 g라고 했을 때
  • 최송배수는 L = g * (a/g) * (b/g)이다.

AXB = GCD XLCM

LCM = A*B/G

'Algorithm' 카테고리의 다른 글

Set / Map  (0) 2021.01.08
Priority Queue (우선순위큐)  (0) 2021.01.08
소수 (에라토스테네스의 체)  (0) 2021.01.07
Brute force  (0) 2021.01.07
Greedy Algorithm  (0) 2021.01.07
Comments