최대공약수 : a와 b의 최대공약수는 (a를 b로 나눈 나머지)와 b의 최대공약수와 같다.
큰 수를 작은 수로 나눈 나머지로 큰 수를 대체한다. 큰 수를 작은 수로 계속 나누어서, 나누어 떨어질 때까지 반복한다. 나누어 떨어질 때(나머지가 0일 때), 나누는 수가 최대공약수이다.
def gcd(a,b):
if b < a:
a,b = b,a
while b:
n = a % b
a, b = b, n
return a
최소공배수 = 두 수의 곱 / 최대공약수
def lcm(a,b):
return (a*b)//gcd(a,b)
https://blockdmask.tistory.com/53
https://myjamong.tistory.com/138
'개발 > 알고리즘' 카테고리의 다른 글
[프로그래머스 12899]124 나라의 숫자 - 파이썬 풀이 (0) | 2021.11.04 |
---|---|
[BOJ 10814] 나이순 정렬 - 파이썬, 람다 (0) | 2021.07.20 |
[알고리즘] 소수 판별하기 - 파이썬 (0) | 2021.06.24 |
[자료구조] 스택, 큐 구현 - 파이썬 deque (0) | 2021.06.24 |
[BOJ(백준) 10250] ACM호텔 - 파이썬 풀이 (0) | 2021.06.01 |