728x90

https://programmers.co.kr/learn/courses/30/lessons/12940

 

코딩테스트 연습 - 최대공약수와 최소공배수

두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의

programmers.co.kr

출처 : 프로그래머스


def gcd(a,b):
    if a<b:
        a,b = b,a
    while b!=0:
        a,b = b, a%b
    return a

def solution(n, m):
    answer = []
    answer.append(gcd(n,m))
    answer.append(n*m//gcd(n,m))
    return answer

풀이

유클리드 호제법 알고리즘이다.

최대공약수는 math.gcd(n,m) 으로 구할 수도 있다.

최소공배수는 n*m//gcd(n,m) -> 즉, 두 수의 곱에 두 수의 최대공약수를 곱한 값과 같다.

+ Recent posts