비전공자 공부일기/:: ALGORITHM

[알고리즘] 최대공약수 구하기 - 파이썬

와니_ 2021. 10. 20. 22:31

방식 1. 큰 수에서부터 나눠보며 깎아나가기(?)

def solution(a, b):
	i = min(a, b)
    while True:
    	if a % i == 0 and b % i == 0:
        	return i
        i = i - 1

 

방식 2. 유클리드

# 유클리드 알고리즘
# 수학자로 유명한 유클리드(Euclid)의 발견에 따르면, 최대공약수에 다음과 같은 성질이 있다.
# a b의 최대공약수는 'b' 'a b로 나눈 나머지'의 최대공약수와 같다. , gcd(a, b) = gcd(b, a%b)
# 어떤 수와 0의 최대공약수는 자기 자신이다. , gcd(n, 0) = n

def solution(a, b):
	if b == 0:
    	return a
    return solution(b, a%b)