[백준] 2609번 : 최대공약수와 최소공배수(파이썬)




문제





나의 답안

a,b=map(int,input().split())

def cal(num):
    li=[]
    for i in range(1,num+1):
        if num%i==0:
            li.append(i)
    return li

gon=[x for x in cal(a) if x in cal(b)]

print(max(gon))
print(a * b // max(gon))
  1. a와 b를 입력 받는다.
  2. 약수를 계산하는 cal 함수를 정의해준다. 반복문을 통해 인자로 들어온 숫자의 약수를 구해주고, 배열에 저장해 배열을 리턴해준다.
  3. gon은 a의 약수와 b의 약수 중 같은 값을 갖는 것을 반환해준다. 공약수란 공통된 약수이다.
  4. gon 중 최대인 값이 최대공약수이다. 즉, max(gon)
  5. 최소공배수는 a와 b를 곱한 값을 최대공약수로 나눈 값을 의미한다. 따라서 (a * b // max(gon)이 된다.

좋은 웹페이지 즐겨찾기