[알고리즘/파이썬] 유클리드 호제법 - 최대공배수 최대공약수 쉬운 설명

2025. 2. 14. 14:34·코딩테스트 준비/알고리즘 개념

학교에서 배운 최대공배수 구하는 방법과

유클리드 호제법 알고리즘을 사용해서 코드를 구현하는 방법은 다르다.

 

나처럼 유클리드 호제법이 뭔데? 라고 생각한 분들을 위해

5분 안에 쉽게 이해되도록 설명해보겠다.

 

최소공배수를 구하는 공식에 최대공약수가 들어가므로

최대공약수 먼저 알아보겠다.

 

 

※ 유클리드 호제법 - 최대 공약수

 

유클리드 호제법은 두 자연수의 최대 공약수를 구하는 알고리즘이다.

먼저 MOD 연산을 알고 있어야 하는데 MOD는 두 수의 나머지를 구하는 연산이다.

예를 들어 파이썬에서 나머지를 구하는 연산은 % 이며, 10 % 6 = 4 가 나온다.

 

유클리드 호제법으로 108과 138의 최대공약수를 구해보겠다.

이해하기 쉽게 그림으로 풀어봤다.

 

 

1. 큰 수를 작은 수로 MOD 연산 실행

2. 전 단계에서의 작은 수와 나머지(결과값)로 MOD 연산 실행

3. 나머지가 0이 될 때까지 재귀함수로 반복

4. 나머지가 0이 나왔을 때 작은 수가 두 수의 최대 공약수

 

 

최대공약수 코드

 

import sys
input = sys.stdin.readline

a, b = map(int, input().split())

def gcd(x, y):
    if y == 0:      # y가 0이면 x가 최대공약수
        return x
    else:
        return gcd(y, x % y)    # 재귀로 구현

if a > b:
    res = gcd(a, b)
else:
    res = gcd(b, a)
    
print(res)

 

 

※ 최소 공배수

 

최소공배수의 공식은 두 수 A와 B가 입력값으로 주어졌을때,

A * B / 최대공약수 이다.

 

A가 6, B가 10인 경우 최소 공배수를 구하는 방법은 아래 그림과 같다.

 

최소공배수 코드

 

import sys
input = sys.stdin.readline

a, b = map(int, input().split())

def gcd(x, y):
    if y == 0:
        return x
    else:
        return gcd(y, x%y)

print(int(a*b/gcd(a, b)))		# 최소공배수 공식

 

 

알고리즘 문제 풀기

 

이제 유클리드 호제법 알고리즘으로 백준 최대공약수, 최소공배수 문제를 풀어보겠다.

대표적으로 1850번과 1934번이 있고 풀이 코드는 아래 링크를 참조하면 된다.

 

[백준 1850번 최대공약수 문제]

 

[백준] 1850번 최대공약수 파이썬 Python / 유클리드 호제법 풀이

https://www.acmicpc.net/problem/1850 프로그래밍 알고리즘으로 최대공약수를 구하는 방법이학교에서 배운 소인수 분해와 달라서 처음엔 이게 무슨 소린가 했다. 개념만 알면 MOD 연산으로 아주 쉽게 풀

hiyani.tistory.com

 

[백준 1934번 최소공배수 문제]

 

[백준] 1934번 최소공배수 - 유클리드 호제법 풀이 파이썬 Python

https://www.acmicpc.net/problem/1934 백준 1934번 최소공배수 문제를 풀려면 먼저유클리드 호제법 최대공약수에 대해 알아야 한다. 유클리드 호제법에 대한 세세한 내용은 알고리즘 카테고리에 기록해

hiyani.tistory.com

 

저작자표시 비영리 변경금지

'코딩테스트 준비 > 알고리즘 개념' 카테고리의 다른 글

[Algorithm] 최단 거리 알고리즘 종류 총정리(다익스트라, 플로이드, 벨만포드) with Python  (1) 2025.02.21
'코딩테스트 준비/알고리즘 개념' 카테고리의 다른 글
  • [Algorithm] 최단 거리 알고리즘 종류 총정리(다익스트라, 플로이드, 벨만포드) with Python
하이야니
하이야니
또 취준..!
  • 하이야니
    하이야니's 스케치
    하이야니
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 코딩테스트 준비
        • 알고리즘 개념
        • 문제풀이
      • 파이썬
      • 자바
      • 리눅스
      • C언어
      • 여행
        • 국내
        • 해외
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    거리두기확인하기풀이
    프로그래머스코딩테스트
    벨만포드다익스트라
    pccp기출문제
    유클리드호제법최대공약수
    다익스트라
    유클리드호제법파이썬
    거리두기확인하기파이썬
    프로그래머스pccp
    pccp기출문제1번
    프로그래머스거리두기
    벨만포드음수사이클
    프로그래머스거리두기확인하기파이썬
    너비우선탐색파이썬
    프로그래머스거리두기확인하기
    프로그래머스파이썬
    백준bfs
    프로그래머스pccp기출문제
    백준유클리드호제법
    벨만포드
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
하이야니
[알고리즘/파이썬] 유클리드 호제법 - 최대공배수 최대공약수 쉬운 설명
상단으로

티스토리툴바