https://programmers.co.kr/learn/courses/30/lessons/12940
다음 문제는, 최대공약수와 최소공배수를 구해 반환하는 문제입니다.
- 유클리드 호제법을 이용해 최대공약수를 구한다.
- 최소공배수는 a와 b를 곱한값을 최대공약수로 나눠주게 되면 그 값이 최소공배수인점을 이용한다.
def gcd(a, b):
while a % b != 0:
a , b = b, a % b
return b
def gcdLCM(a, b):
return a * b / gcd(a, b)
def solution(n, m):
answer = [gcd(n, m), gcdLCM(n, m)]
return answer
2개의 자연수 a, b에 대해서 a를 b로 나눈 나머지를 r이라 하면(단, a>b), a와 b의 최대공약수는 b와 r의 최대공약수와 같다. 이 성질에 따라, b를 r로 나눈 나머지 r'를 구하고, 다시 r을 r'로 나눈 나머지를 구하는 과정을 반복하여 나머지가 0이 되었을 때 나누는 수가 a와 b의 최대공약수이다