[알고리즘] 최대공약수와 최소공배수(with. 유클리드 호제법)

zooyaho·2023년 6월 14일
0
post-thumbnail

🖍 유클리드 호제법이란

두 양의 정수, 혹은 두 다항식의 최대공약수를 구하는 방법아다.
호제법이란 말은 두 수가 서로 상대방 수를 나누어서 결국 원하는 수를 얻는 알고리즘을 나타낸다.

  • 2개의 자연수 a, b에 대해서 a를 b로 나눈 나머지를 r이라 하면(단, a>b) a와 b의 최대공약수는 b와 r의 최대공약수와 같다.
  • 이 성질에 따라, b를 r로 나눈 나머지 r'를 구하고,
    다시 r을 r'로 나눈 나머지를 구하는 과정을 반복하여 나머지가 0이 되었을 때 나누는 수가 a와 b의 최대 공약수(gcd)이다.

👉 A > B 일때 A와 B의 최대공약수는 B와 나머지 R의 최대공약수와 같다.

  1. 큰 수(A)를 작은 수(B)로 나눈다. ( A > B )

  2. 나누는 수(B)를 나머지(R)로 계속 나눈다.

  3. 나머지가 0이 나오면 나누는 수가 최대 공약수이다.

🙌 재귀문으로 최대 공약수(gcd) 구현

const gcd = (a, b) => a % b === 0 ? b : gcd(b, a % b);

🙌 최소 공배수(lcm)

최소공배수는 두 수(a, b)를 곱한 후에 최대공약수로 나누면 나온다.

const lcm = (a,b) => a * b / gcd(a, b);

참고
나무위키
블로그

profile
즐겁게 개발하자 쥬야호👻

0개의 댓글