티스토리 뷰

알고리즘

유클리드 호제법(최대 공약수 구하기)

geonwoopaeng@gmail.com 2020. 8. 27. 21:09

### 최대 공약수(GCD, Greatest Common Divider) ###

: 0이 아닌 두 정수나 다항식의 공통되는 약수 중에서 가장 큰 수

 

 

 

### 유클리드 호제법(Euclidean Algorithm) ###

: a % b = R이라고 했을 때,

 a와 b의 최대공약수는 b와 R의 최대공약수와 같다

=> GCD(a, b) = GCD(b, a%b) = GCD(b, a mod b)

 

 

1.

#유클리드 호제법 사용
def GCD(a,b):
	if a % b == 0:
		return b 
	return GCD(b, a%b)


# 유클리드 호제법 반복문으로 변경 
def GCD(a,b):
	while a % b != 0:
		a, b = b, a%b 
	return b 

 

2. 라이브러리(math) 사용

import math 

math.GCD(a,b)

 

 

 

 

번외 크드는 그냥 최대 공약수를 구하는 것으로 속도가 느릴 수 있습니다.

그래서 위의 방법을 사용합니다.

 

번외 코드

def gcd(x,y):
    for i in range(min(x,y),0,-1):
        if x % i == 0 and y % i == 0:
            return i 
반응형

'알고리즘' 카테고리의 다른 글

최소공배수 (LCM)  (0) 2020.08.27
Dijkstra(다익스트라)  (0) 2020.08.27
플로이드-워셜(Floyd-Warshall)  (0) 2020.08.26
하노이의 탑  (0) 2020.08.26
DFS  (0) 2020.08.26
공지사항
최근에 올라온 글