알고리즘/백준

파이썬(python) 2609번 최대공약수와 최소공배수

HeyTeddy 2022. 1. 25. 10:14
반응형

문제링크

https://www.acmicpc.net/problem/2609

 

2609번: 최대공약수와 최소공배수

첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다.

www.acmicpc.net

24, 18의 최대공약수는 6, 최소공배수는 72이다.

최대공약수를 구하는 공식은 24와 18의 약수 중 공약수 값 중 가장 큰 값이다.

최소공배수는 최대공약수를 구한 후, 24와 18를 최대공약수(6)으로 나눈 후 나온 몫 값 2개를 곱하면 6X4X3=72이다.

import sys
n1, n2 = map(int, sys.stdin.readline().split())

n_min = min(n1, n2)
n_list = []
for i in range(1, n_min+1):
    if (n1%i == 0) & (n2%i == 0):
        n_list.append(i)
print(max(n_list)) # 최대공약수
print(max(n_list) * n1//max(n_list) * n2//max(n_list)) # 최소공배
반응형