코딩테스트 준비/백준

백준 2609번 파이썬 최대공약수와 최고공배수

watervin 2022. 4. 1. 14:41

최대공약수와 최소공배수 성공

 
시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 128 MB 59661 35066 28422 59.904%

문제

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

입력

첫째 줄에는 두 개의 자연수가 주어진다. 이 둘은 10,000이하의 자연수이며 사이에 한 칸의 공백이 주어진다.

출력

첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다.

예제 입력 1 복사

24 18

예제 출력 1 복사

6
72

 

첫번째 코드 - > 결과 틀렸습니다.

왜지?! 값은 맞게 나오는데..


n,m = map(int,input().split())

min = 1
max = 1

while 1:
    if n % 2 == 0 and m % 2 == 0:
        n = n // 2
        m = m // 2 
        min *= 2
        max *= 2
        
    elif n % 3 == 0 and m % 3 == 0:
        n = n // 3
        m = m // 3
        min *= 3
        max *= 3
      
    else : 
        max = max * n * m
      
        break
print(min)
print(max)

첫번째 코드 - > 결과 틀렸습니다.

왜지?! 값은 맞게 나오는데..


import math

n,m = map(int,input().split())
print(math.gcd(n,m))
print(math.lcm(n,m))

이건 math 모듈로 쉽게 풀 수 있다고 해서 사용해보았다.

잘 되네

gcd -> 최소공약수

lcm -> 최대공배수