15강 최대공약수(Python Algorithm 15 GCD)
부제 : 알고리즘을 배우면서 파이썬 기초부터 RPG까지 정복
내용 : 초중고 또는 코딩 기초 입문자를 위한 누구나 따라 배울 수 있는 Python Algorithm 프로그램 기초 강의
1. 파이썬 기초 입문자
2. 알고리즘 기초에서 수학 기초
3. 기초 코딩
4. Text RPG Project
[동영상강의]
오랫만에 파이썬을 공부해 보는군요.
감각을 잃어버릴까봐 매주에 한 개씩이라도 공부를 해야 할 것 같습니다.
훗날 자라미를 교육하기 위해서라도 RPG까지 기초 이론을 끝내야 할 것 같습니다.
알고리즘이라는 제목으로 강의를 하지만 실제로는 파이썬 기초 문법부터
다 가르치고 있으므로 처음 부터 따라해보세요.
중간 중간에 나오는 기초 문법에 해당하는 사항은 그 문법을 설명하고 지나갑니다.
최대공약수(Greatest Common Division:GCD)
4의 약수는 1, 2, 4 이고
12의 약수는 1, 2, 3, 4, 6, 12 입니다.
4 와 12의 공통된 약수는 1, 2, 4 가 되는데 이것들을 공약수라고 부르고
이 공약수 중 가장 큰 값을 최대공약수라고 하며 여기서는 4가 됩니다.
최대공약수 구하기
- 두 수 중 더 작은 값을 i 에 저장합니다.
4와 12 에서 4를 i 에 저장합니다.
4와 12 중에서 작은 값을 최대공약수라고 생각하고 i 에 저장하는 것입니다.
- i 가 두 수의 공통된 약수인지 확인합니다.
- 4와 12는 둘다 i 로 나누어 떨어집니다.
- 공통된 약수이면 이 값을 결괏값으로 돌려주고 종료합니다.
- 4 가 최대공약수가 됩니다.
- 두 수 중 더 작은 값을 i 에 저장합니다.
4와 6 에서 4를 i 에 저장합니다.
4와 6 중에서 작은 값을 최대공약수라고 생각하고 i 에 저장하는 것입니다.
- i 가 두 수의 공통된 약수인지 확인합니다.
- 4 는 i로 나누어 떨어지지만 6은 i 로 나누어 떨어지지 않습니다.
- 공통된 약수가 아니면 i를 1 만큼 감소시킵니다.
- i를 1만큼 감소시켜 i는 3이 됩니다.
- i 가 두 수의 공통된 약수인지 확인합니다.
4 는 i로 나누어 떨어지지않고 6은 i 로 나누어 떨어집니다.
- 공통된 약수가 아니면 i를 1 만큼 감소시킵니다.
i를 1만큼 감소시켜 i는 2가 됩니다.
- i 가 두 수의 공통된 약수인지 확인합니다.
4 는 i로 나누어 떨어지고 6도 i 로 나누어 떨어집니다.
- 공통된 약수이면 이 값을 결괏값으로 돌려주고 종료합니다.
- 2 가 최대공약수가 됩니다.
만약 i 가 1이되면 1은 모든 두 수의 공통된 약수가 되므로 1 을 최대공약수로 해서
결괏값으로 돌려주면 됩니다.
3과 5의 공통된 약수는 1 뿐이므로 이 경우 i=1 이 되겠죠.
먼저 코딩을 해 봅시다.
그리고 결과를 보고 난 다음
while 문을 다음 강의에 진행하겠습니다.
그리고 최대공약수 구하는 다른 방법을 알아보도록 합시다.
gcd.py
# 최대공약수 구하기
# 입력 : a, b
# 출력 : a와 b의 최대공약수
def gcd(a, b): # 두 수 a, b를 받음
i = min(a, b) # 두 수 중에서 최솟값 구함
while True : # while문은 조건문이 참인 동안에
# while문 아래에 속하는 문장들이
# 반복해서 수행됨
# True 이므로 무한 반복
if a % i == 0 and b % i == 0: # % 나머지구함
return i # i 값을 돌려 준 후 함수를 즉시 종료
i -= 1 # i를 1만큼 감소
print(gcd(4, 12)) # 4
print(gcd(4, 6)) # 2
print(gcd(3, 5)) # 1
4
2
1
'Python > 닭치고 Algorithm' 카테고리의 다른 글
16강 while 문(Python Algorithm 16 while) (0) | 2021.03.22 |
---|---|
14강 계산기(Python Algorithm 14 calculator) (2) | 2020.04.04 |
13강 동명이인 찾기(Python Algorithm 13 person with the same name) (0) | 2020.04.02 |
12강 최댓값찾기(Python Algorithm 12 Maximum value) (4) | 2020.04.02 |
11강 재귀호출 sum(Python Algorithm 11 Recursive call sum) (0) | 2020.03.25 |
댓글