유클리드 호제법 (Euclidean algorithm) 은 2개의 자연수 또는 정식의 최대공약수를 구하는 알고리즘 중 하나입니다.
최대공약수 (Greatest Common Divisor) : 두 개 이상의 정수의 공통 약수 중에서 가장 큰 값을 의미합니다.
공식
만약 i > j 일 경우,
i % j == 0이면 i와 j의 최대공약수는 j이다.
그렇지 않다면, i와 j의 최대 공약수는 j와 i % j의 최대공약수와 같다. (i % j != 0)
예를 들어,
- 10과 5의 최대공약수: 10%5 = 0 이므로 5가 최대공약수입니다.
- 10과 8의 최대공약수: 10%8 = 2 이며, 8 % 2 = 0 이므로 2가 최대공약수 입니다.
더 큰 수인 832와 1088의 경우에도
- 1088 % 832 = 256
- 896 % 256 = 64
- 256 % 64 = 0
그러므로 832와 1088의 최대공약수는 64입니다.
Python 코드
n,m의 최대공약수를 구하는 함수입니다.
재귀를 통해 n%m = 0 이 될 때까지 m과 n%m의 최대공약수를 구합니다.
'Algorithm > Algorithm' 카테고리의 다른 글
[Python] 세그먼트 트리, Segment Tree 구조 이해 (파이썬 코드) (0) | 2024.10.17 |
---|---|
[Python] 너비 우선 탐색, BFS (Breadth First Search) 알고리즘 파이썬 코드 (0) | 2024.10.10 |
[Python] 깊이 우선 탐색, DFS (Depth First Search) 알고리즘 파이썬 코드 (1) | 2024.10.10 |
[Python] 소수 판별, 소수 리스트 구하기 (feat.에라토스테네스의 체) (0) | 2023.02.03 |
최소 스패닝 트리(MST, Minimum Spanning Tree), Kruskal & Prim 알고리즘 (0) | 2023.01.12 |