💡 공약수
여러 개의 정수가 공통으로 가지고 있는 약수
10 의 약수 : 1, 2, 5
5 의 약수 : 1, 5
공약수 : 1, 5
💡 GCD (Greatest Common Divisior) - 최대공약수
12의 약수 : 1, 2, 3, 4, 6, 12
8의 약수 : 1, 2, 4, 8
공통 : 1, 2, 4
8과 12의 최대 공약수 : 4
💡 LCM (Largest Common Multiple) - 최소공배수
두 수, 혹은 그 이상의 수들의 공통인 배수 중에서 가장 작은 수
12의 배수 : 12, 24, 36, 48, 60
8의 배수 : 8, 16, 24, 32, 40, 48
8과 12의 최소 공배수 : 24
💡 실행 사진
💡 유클리드 호제법
비교대상 두 개의 자연수 n, m (단 n >m) 에서 n을 m으로 나눈 나머지를 r이라고 했을때
GCD(n, m) = GCD(m, r)과 같고 r이 0이면 그때 m이 최대공약수이다. 라는 원리를 활용한 알고리즘..
💡 최대 공약수
def gcd(a, b):
while b > 0:
a, b = b, a % b
return a
💡 최소 공배수
def lcm(a, b):
return a * b / gcd(a, b)
💡 전체 코드
def gcd(a, b):
while b > 0:
a, b = b, a % b
return a
def lcm(a, b):
return a * b / gcd(a, b)
print(gcd(28, 14))
print(gcd(48, 24))
print(gcd(2, 4))
print(gcd(4, 8))
[Python 팩토리얼] 팩토리얼 코드 개선 및 재귀함수 적용 전과 적용 후 (0) | 2022.02.13 |
---|---|
[Python 유클리드호제법 및 팩토리얼] 최대 공약수 및 팩토리얼 재귀함수 적용 전과 적용 후 (0) | 2022.02.13 |
[Python 재귀 알고리즘] 팩토리얼 구하기 (0) | 2022.02.11 |
[Python 오름차순 정렬] Sort 함수 사용하지 않고 정렬하기 (0) | 2022.02.02 |
[Python 일기장 만들기 (2)] Python Firebase 연동하기 (0) | 2021.12.24 |