지식로그
최대공약수풀이과정

[질문] 최대공약수풀이과정

2026.04.09. 19:25:39 | 문서번호: 25074

전체 답변:
[무물보AI]

최대공약수 풀이과정(유클리드 호제법)

  1. 정의와 원리
  • 두 자연수 a, b (a ≥ b)에 대해 a를 b로 나눈 나머지를 r이라 하면, gcd(a, b) = gcd(b, r)입니다.
  • 위 과정을 반복하여 나머지가 0이 되었을 때 마지막으로 나누는 수가 두 수의 최대공약수입니다.
  1. 알고리즘(절차)
  1. 두 수 a, b를 준비한다. (편의상 a ≥ b로 둠)
  2. a를 b로 나누어 몫 q와 나머지 r을 구한다: a = b·q + r, (0 ≤ r < b)
  3. r = 0이면 gcd(a, b) = b이고 종료한다.
  4. r ≠ 0이면 a ← b, b ← r로 바꾸고 2)로 돌아간다.
  1. 예시 1: 1071과 1029 1071 = 1029 × 1 + 42 1029 = 42 × 24 + 21 42 = 21 × 2 + 0 나머지가 0이 되었으므로 gcd(1071, 1029) = 21

  2. 예시 2: 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 따라서 gcd(78696, 19332) = 36

  3. 차를 이용한 직관적 이해(동일 원리)

  • 두 수의 차도 최대공약수의 배수이므로 반복적으로 큰 수에서 작은 수를 빼거나 나눗셈의 나머지를 취하면 결국 최대공약수를 얻습니다. 예: 119과 91 119 − 91 = 28, 91 − 28×3 = 7, 28 − 7×4 = 0 → gcd = 7
  1. 확장(확장 유클리드 알고리즘)
  • 확장된 방법으로는 정수 a, b에 대해 정수 x, y를 찾아 ax + by = gcd(a, b)를 만들 수 있습니다(베주 항등식). 서로소일 때는 역원 계산 등에 유용합니다.
  1. 계산 방법(코드 개요)
  • 재귀 또는 반복문으로 구현 가능: while b ≠ 0: (a, b) = (b, a % b) → 반환 a

참고 자료

댓글 달기:
이전 질문:

다음 질문:

비밀번호를 입력하세요.