문제
두 개의 자연수를 입력받아 최대 공약수와 최소 공배수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에는 두 개의 자연수가 주어진다. 이 둘은 10,000이하의 자연수이며 사이에 한 칸의 공백이 주어진다.
출력
첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다.
# 해결법
x, y에 값을 입력받고 x가 y보다 크다면 x와 y의 값을 서로 바꿔준다.
그리고 1에서 작은 값이된 x까지 반복문을 돌면서 공약수라면 gcd를 계속해서 갱신해준다.
cnt에 1씩 더하면서 큰 수를 곱하고, 곱한 값 % 작은수 가 0이라면 lcm을 갱신하고 break한다.
# 나의 코드
x, y = map(int, input().split())
gcd = lcm = cnt = 0
if x > y:
x, y = y, x
for i in range(1,x+1):
if x % i == 0 and y % i == 0:
gcd = i
while True:
cnt += 1
if ((cnt * y) % x) == 0:
lcm = cnt * y
break
print(gcd)
print(lcm)
'Python' 카테고리의 다른 글
백준 1292 - 쉽게 푸는 문제 (파이썬) (0) | 2021.04.05 |
---|---|
백준 1978 - 소수 찾기 (파이썬) (0) | 2021.04.04 |
백준 2309 - 일곱 난쟁이 (파이썬) (0) | 2021.04.04 |
백준 10870 - 피보나치 수 5 (파이썬) (0) | 2021.04.04 |
백준 3460 - 이진수 (파이썬) (0) | 2021.04.04 |