Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- select
- Oracle
- orderedDict
- 싱글톤
- 리스트 자르기
- 스프링
- 청크
- DAO의 분리
- 오버라이딩
- null
- GCP Storage
- 쓰는이유
- defaultdict
- 자바
- 싱글톤 레지스트리
- PYTHON
- java
- spring
- 121
- 외부조인
- 파이썬
- DAO
- Spring Framework
- 백준
- 데이터베이스
- JIT
- overriding
- ChainMap
- 개발기록
- react
Archives
- Today
- Total
PengTory
유클리드 호제법(Euclidean-Algorithm) feat. Python 본문
유클리드 호제법이란? (최대공약수 구하기)
유클리드 호제법 또는 유크리드 알고리즘은 2개의 자연수 또는 정식의 최대 공약수를 구하는 알고리즘의 하나이다.
호제법이란 두 수가 서로 상대방 수를 나누어 결국 원하는수를 얻는 알고리즘을 나타낸다.
예시
* mod란 나머지 연산을 의미한다.
1071, 1029의 최대공약수
1) 1071은 1029로 나누어 떨어지지 않기 때문에 1071 mod 1029를 계산한다. => 42
2) 1029는 42로 나누어 떨어지지 않기 때문에 1029 mod 42를 계산한다. => 21
3) 42는 21로 나누어떨어진다. => 최대공약수: 21
24와 18의 최대공약수
1) 24와 18은 나누어 떨어지지 않기 때문에 24 mod 18을 계산한다. => 6
2) 18은 6으로 나누어떨어진다. => 최대공약수: 6
최소공배수 구하기
주어진 값 a와 b를 곱한 값을 최대공약수로 나누면 최소공배수가 나온다.
24와 18의 최소공배수
24 * 18 // 6(최대공약수) = 72
파이썬 코드
아래와 같은 방식으로 최대공약수, 최소공배수를 구할 수 있다.
def GCD(a,b):
while b:
a,b = a%b
return a
def LCM(a,b):
ans = (a*b) // GCD(a,b)
return ans
또한 파이썬에는 math 함수를 사용하면 최대공약수와 최소공배수를 매우 쉽게 구할 수 있다.
import math
print(math.gcd(a,b))
print(math.lcm(a,b))
(참고) math.lcm은 파이썬 3.9 버전부터 사용할 수 있다! 3.5~ 3.8 버전에서는 오류가 날 것이다.
'Algorithm + 코테준비' 카테고리의 다른 글
[백준] 1312_소수 (Python) (0) | 2022.12.09 |
---|---|
[LeetCode] 121번 (Python) (0) | 2022.10.20 |
[백준] 9095 _ 1, 2, 3 더하기 (Python) (0) | 2022.10.17 |