카테고리 없음
알고리즘 [수학 : 최대 공약수 (유클리드 호제법) ]
세모난 야구공
2022. 1. 20. 00:00
최대 공약수(GCD. Greatest Common Divisor)구하기
최대 공약수 : 두수에서 공통적으로 나누어지는 약수중 가장 큰 값
유클리드 호제법
유클리드 호제법(-互除法, Euclidean algorithm) 또는 유클리드 알고리즘
2개의 자연수 또는 정식(整式)의 최대공약수를 구하는 알고리즘의 하나이다.
호제법이란 말은 두 수가 서로(互) 상대방 수를 나누어(除)서 결국 원하는 수를 얻는 알고리즘을 나타낸다.
2개의 자연수(또는 정식) 큰수에서 작은수를 나눈 나머지라 할때, 두수 사이의 최대공약수는 작은수와 나머지의 최대공약수와 같다. 이 성질에 따라, 작은수 나누기 나머지에서의 나머지2 ...
과정을 반복하여 나머지가 0이 되었을 때 나누는 수가 처음 두수의 최대공약수이다.
예시
1071과 1029의 최대공약수를 구하면,
- 1071은 1029로 나누어 떨어지지 않기 때문에, 1071을 1029로 나눈 나머지를 구한다. ≫ 42
- 1071 % 1029 === 42
- 1029는 42로 나누어 떨어지지 않기 때문에, 1029를 42로 나눈 나머지를 구한다. ≫ 21
- 1029 % 42 === 21
- 42는 21로 나누어 떨어진다.
- 42 % 21 === 0
따라서, 최대공약수는 21이다.
78696과 19332의 최대공약수를 구하면,
78696 = 19332×4 + 1368
19332 = 1368×14 + 180
1368 = 180×7 + 108
180 = 108×1 + 72
108 = 72×1 + 36
72 = 36×2 + 0
따라서, 최대공약수는 36이다.
재귀함수로 표현
function gcd(m, n) {
if (m % n === 0) return n;
return gcd(n, m % n);
}