- 큰 수를 작은 수로 나누는 과정을 반복하며, 나머지가 0이 될 때 나누는 수가 최대공약수가 되는 알고리즘
// 방법1. 반복문
const gcd = (num1, num2) => {
let r;
while(num2 > 0) {
r = num1 % num2;
num1 = num2;
num2 = r;
}
return num1;
}
// 방법2. 재귀 함수
const gcd = (num1, num2) => (num2 > 0 ? gcd(num2, num1%num2) : num1);
ex) GCD(18, 12) = 6
- a = 18, b = 12 ➡️ r = 6
- a = 12, b = 6 ➡️ r = 0
- a = 6, b = 0 ➡️ X