Math_04_최대공약수와 최소공배수(2609)

Math04최대공약수와 최소공배수(2609)

문제

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

입력

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

출력

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

풀이

세가지 방법이 있다

    1. (시간초과)

      -2. math 라이브러리에서 gcm함수와 (최대공약수) & lcm함수 (최소공배수) 사용
  1. 유클리드 호재법
    : 유클리드 호제법이란 x,y의 최대공약수는 y,r의 최대공약수와 같다는 원리를 이용한 것이다
    (x%y = r)
    x와 y의 최대 공약수 == y와 r 의 최대공약수

코드

import sys
sys.stdin = open("input.txt","rt")
import math

def input():
    return sys.stdin.readline().rstrip()

a, b = map(int,input().split())
# 최대 공약수 구하기
print(math.gcd(a,b))
# 최소 공배수 구하기
print(math.lcm(a,b))

배운 것

marh 라이브러리에 최대 공약수와 최고 공배수를 구하는 함수가 있구나

코멘트

좋은 웹페이지 즐겨찾기