관리 메뉴

진취적 삶

최대공약수와 최소공배수 본문

알고리즘/수학 1

최대공약수와 최소공배수

hp0724 2023. 6. 26. 15:57

bookmark

문제

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

입력

첫째 줄에는 두 개의 자연수가 주어진다. 이 둘은 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 바꿈

'알고리즘 > 수학 1' 카테고리의 다른 글

최소공배수  (0) 2023.06.26
소수찾기  (0) 2023.06.26
소수 구하기  (0) 2023.06.26
골드바흐의 추측  (0) 2023.06.26
팩토리얼  (0) 2023.06.26