본문 바로가기
알고리즘/BOJ

[BOJ / 백준] 2609번 최대공약수와 최소공배수 python

by seohmoon 2022. 2. 2.

문제

두 개의 자연수를 입력받아 최대 공약수와 최소 공배수를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에는 두 개의 자연수가 주어진다. 이 둘은 10,000이하의 자연수이며 사이에 한 칸의 공백이 주어진다.

출력

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


예제 입력 1

24 18


예제 출력 1

6
72

 

 


최대공약수, 최소공배수

def soo(x): #먼저 약수를 찾아줌
    tem = 1
    tem_list = []
    while tem <= x:
        if x % tem == 0:
            tem_list.append(tem)
        tem += 1
    return(tem_list)

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

a_list = soo(a)
b_list = soo(b)
# 최대공약수
max_num = 0
for i in a_list:
    for j in b_list:
        if i == j:
            max_num = i
print(max_num)
print(max_num*(a//max_num)*(b//max_num)) # 최소공배수

 

먼저 약수를 찾아줌

그리고 최대공약수를 찾고, a b로 나눈 나머지랑 곱해줌

댓글