진취적 삶
5 최대 약수 구하기 본문
- 두 수 중 더 작은 값을 i 에 저장
- i 가 두 수의 공통된 약수인지 확인
- 공통된 약수이면 이 값을 결과값
- 공통된 약수가 아니면 i를 1만큼 감소 반복
def gcd(num1,num2):
num=max(num1,num2)
gcd=0
for i in range (2,num+1):
if(num1 %i ==0 and num2 % i ==0) :
gcd = i
return gcd
print(gcd(15,12))
답안
def gcd(num1,num2):
gcd=min(num1,num2)
while True:
if num1%gcd==0 and num2 %gcd ==0:
return gcd
gcd=gcd-1
print(gcd(22,11))
유클리드 알고리즘
- a와 b의 최대 공약수는 b와 a를 나눈 나머지의 최대 공약수와 같다.
60, 24
gcd(60,24) ==gcd(24,12) == gcd(12,0) == 12
def euclid(num1,num2) :
large= max(num1,num2)
small =min(num1,num2)
if(small) ==0 :
return large
return euclid(small,large%small) # 작은 값으로 자기 자신을 호출
print(euclid(33,22))
'개발 도서 > 모두의 알고리즘 WITH 파이썬' 카테고리의 다른 글
| 13 회문찾기 (0) | 2023.07.07 |
|---|---|
| 14 동명이인 찾기 딕셔너리 (0) | 2023.07.07 |
| 6 하노이의 탑 옮기기 (0) | 2023.07.07 |
| 7 순차 탐색 (0) | 2023.07.07 |
| 8 선택 정렬 (0) | 2023.07.07 |