일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- SMAPE
- Scienceplots
- 프로그래머스
- mes
- Overleaf
- RMES
- knn
- TypeError
- 파이썬을파이썬답게
- 논문
- 논문editor
- KAKAO
- Mae
- python 갯수세기
- mMAPE
- MAPE
- n_sample
- iNT
- Alignments
- 평가지표
- Pycaret
- 스택
- 코테
- PAPER
- 논문작성
- 에러해결
- n_neighbors
- Python
- 카카오
- Tire
- Today
- Total
EunGyeongKim
[Python] 유클리드 호제법 본문
2022/09/06 프로그래머스_연습문제_N개의 최소공배수(문제 링크)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
깃 허브 풀이(깃허브 링크)
GitHub - EunGyeongKim/TIL: Today I Learne
Today I Learne. Contribute to EunGyeongKim/TIL development by creating an account on GitHub.
github.com
프로그래머스 문제를 풀다가 유클리드 호제법을 이용하여 최소 공배수(LCM, Least Common Multiple)를 구하는 방법을 알게 되어 정리합니다.
최소 공배수, 최대공약수
먼저 간단하게 최소 공배수와 최대 공약수를 정리하겠습니다.

최대공약수(GCD)은 두 수 사이의 공약수 중 최대인 수를 가리킵니다.
최소공배수(LCM)은 양의 공배수 가운데 가장 작은 한 수를 가리킵니다.
위 그림을 참고하면 이해가 쉽습니다.
24의 공약수는 2, 3, 4, 6, 8, 12가 되며, 30의 공약수는 2, 3, 5, 6, 10, 15가 됩니다.
이 두 공약수 중 공통된 수는 2, 3, 5, 6 이며 최대값은 6이기 때문에 최대 공약수는 6이 됩니다.
또한, 24의 배수는 24, 48, 72, 96, 120 ... 이며, 30의 배수는 30, 60, 90, 120 .... 입니다.
그러므로 이 두 수의 최소 공배수는 120이 됩니다.
유클리드 호제법
유클리드 알고리즘은 2개의 자연수 또는 정식(整式)의 최대공약수를 구하는 알고리즘의 하나
호제법이란 말은 두 수가 서로 상대방 수를 나누어서 원하는 수를 얻는 알고리즘입니다.
예를들어 1071과 1029의 최대공약수를 구하는 순서는 다음과 같습니다.

|
python 소스코드로 나타내면 다음과 같습니다.
#최대 공약수
def gcd(a,b):
c = 0
while (b!=0):
c = a%b
a, b = b, c
return a
<추가>
만약 최소 공배수를 구하고 싶다면
lcm = (a*b) / gcd(a,b)
를 해주면 된다!
'Language > Python' 카테고리의 다른 글
코딩테스트 기초이론 (0) | 2023.02.17 |
---|---|
[preprocess] NaN 값 없애기_Python (0) | 2023.02.01 |
[데이터 구조 및 분석] Linked List 코드 (0) | 2022.08.12 |
[paper] Matplotlib으로 논문용 figure그리기 (1) | 2022.08.10 |
[Python] collection모듈의 counter (0) | 2022.08.09 |