
문제
두 개의 자연수를 입력받아 최대 공약수와 최소 공배수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에는 두 개의 자연수가 주어진다. 이 둘은 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로 나눈 나머지랑 곱해줌
'알고리즘 > BOJ' 카테고리의 다른 글
| [BOJ / 백준] 2675번 문자열 python 파이썬 map으로 input 입력 받기 (0) | 2022.02.08 |
|---|---|
| [BOJ / 백준] 10814번 나이순 정렬 python 파이썬 오름차순 정렬 (0) | 2022.02.02 |
| [BOJ / 백준] 1157번 단어공부 python 시간 초과의 지옥에 빠졌습니다. (0) | 2022.02.01 |
| [BOJ / 백준] 2739번 구구단 python (0) | 2022.01.26 |
| [BOJ / 백준] 10829번 python 이진수 변환 (재귀 함수 사용) (0) | 2022.01.20 |
댓글