진취적 삶
최대공약수와 최소공배수 본문
문제
두 개의 자연수를 입력받아 최대 공약수와 최소 공배수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에는 두 개의 자연수가 주어진다. 이 둘은 10,000이하의 자연수이며 사이에 한 칸의 공백이 주어진다.
출력
첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다.
나의풀이
num1, num2 = map(int, input().split())
gcd = 0
lcm = 0
for i in range(1, max(num1, num2) + 1):
if num1 % i == 0 and num2 % i == 0:
gcd = i
if num1 == num2:
lcm = gcd * (num1 // gcd)
else:
lcm = gcd * (num1 // gcd) * (num2 // gcd)
print(gcd)
print(lcm)
시간을 줄이기 위해 max(num1,num2)//2 +1 를 했으나 2 2 반례를 만나서 max(num1, num2) + 1 바꿈