#03. 유클리드 호제법, 유클리드 알고리즘(Euclidean algorithm)

  • 2개의 자연수 또는 정식의 최대공약수(greatest common divisor)를 구하는 알고리즘 중 하나

 

  • 입력으로 두 수 m,n(m>n)이 들어온다.
  • n이 0이라면, m을 출력하고 알고리즘을 종료한다.
  • m이 n으로 나누어 떨어지면, n을 출력하고 알고리즘을 종료한다.
  • 그렇지 않으면, m을 n으로 나눈 나머지를 새롭게 m에 대입하고, m과 n을 바꾸고 3번으로 돌아온다.

  • 재귀 함수를 이용하는 방법
int GCD(int a, int b) {

	if (b == 0)
		return a;
	else
		return GCD(b, a%b);
}

 

  • 반복문을 이용하는 방법
int GCD(int a, int b) {

	int c;

	while (b) {
		c = a%b;
		a = b;
		b = c;
	}
	return a;
}

 


  • 이를 이용해 최소공배수(least common multiple) 구하는 방법
int lcm(int a, int b)
{
	return a * b / gcd(a,b);
}

 

최소공배수 × 최대공약수 = (두 자연수의 곱) 

 최소공배수 = (두 자연수의 곱) / 최대공약수

 

 

ex) A = Gx, B = Gy (단, x, y는 정수)

 

→ A × B = GGxy (G는 두 수의 최대 공약수이며 x와 y는 서로소 관계)

A × B / G = Gxy (= 최소공배수)

 


 참고한 사이트 ※

 

myjamong.tistory.com/138

 

최대공약수(GCD), 최소공배수(LCM) 구하기 유클리드 호제법 알고리즘 :: 코드자몽

최대공약수 GCD(Greatest Common Divisor) 최대공약수는 두 자연수의 공통된 약수 중 가장 큰 수를 의미한다. ex) 72 와 30의 최대공약수는 6이다. 최소공배수 LCM(Least Common Multiple) 최소공배수는 두 자연..

myjamong.tistory.com

coding-factory.tistory.com/599

 

[Algorithm] 유클리드 호제법 - 최대공약수(GCD) 구하기

유클리드 호제법이란? 유클리드 알고리즘(Euclidean algorithm)은 2개의 자연수의 최대공약수를 구하는 알고리즘입니다. 비교대상의 두 개의 자연수 a와 b에서(단 a>b) a를 b로 나눈 나머지를 r이라고 했

coding-factory.tistory.com

tech.lonpeach.com/2017/11/12/Euclidean-algorithm/

 

유클리드 호제법이란? - Lonpeach 기술 블로그 | Lonpeach Tech

개념

tech.lonpeach.com

 

'Computer Science > Algorithm' 카테고리의 다른 글

#06. 덱(Deque)  (0) 2021.02.05
#05. 큐(Queue)  (0) 2021.02.05
#04. 스택(Stack)  (0) 2021.02.05
#02. 에라토스테네스의 체(Sieve of Eratosthenes)  (0) 2021.02.04
#01. 이분탐색(Binary Search), 이진탐색  (0) 2021.02.04