[BOJ] # 2609번: 최대공약수와 최소공배수
2022. 5. 2. 21:37ㆍ0️⃣ Algorithm&자료구조/BOJ
문제
두 개의 자연수를 입력받아 최대 공약수와 최소 공배수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에는 두 개의 자연수가 주어진다. 이 둘은 10,000 이하의 자연수이며 사이에 한 칸의 공백이 주어진다.
출력
첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다.
CODE
import sys
a, b = map(int, sys.stdin.readline().split())
def multiply(arr):
ans = 1
for n in arr:
ans *= n
return ans
def small_num(i):
d = 2
i_list = []
while i > 1:
if i % d == 0:
i = i / d
i_list.append(d)
else:
d += 1
return i_list
a_list = small_num(a)
b_list = small_num(b)
a_list_2 = a_list.copy()
b_list_2 = b_list.copy()
ma = []
for n in b_list:
if n in a_list_2:
a_list_2.remove(n)
b_list_2.remove(n)
else:
b_list_2.remove(n)
ma.append(n)
max_list = a_list + ma + b_list_2
b_list = small_num(b)
mi = []
for i in a_list:
if i in b_list:
mi.append(i)
b_list.remove(i)
print(multiply(mi))
print(multiply(max_list))
'0️⃣ Algorithm&자료구조 > BOJ' 카테고리의 다른 글
[BOJ] # 9184: 신나는 함수 실행 (0) | 2022.05.03 |
---|---|
[BOJ] # 1003번: 피보나치 함수 (0) | 2022.05.02 |
[BOJ] # 1037번: 약수 (0) | 2022.05.02 |
[BOJ] #2164번 카드 2 (0) | 2022.04.25 |
[BOJ] #18258번 큐 2 (0) | 2022.04.25 |