とおき
토오끼
とおき
전체 방문자
오늘
어제
  • 분류 전체보기 (40)
    • 과제 (16)
    • 백준 (14)
    • C 언어 (5)
    • 잡동사니 (5)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 알파벳 찾기
  • 8958
  • 파이썬
  • 반복문
  • 별표 출력
  • FOR문
  • 알고리즘
  • 유클리드 호재법
  • 파이썬 오류
  • 2523
  • 입출력
  • 백준
  • set함수
  • 문자열
  • 11720
  • 중복값
  • BOJ
  • 최댓값
  • 목록
  • 숫자의 합
  • 주피터 오류

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
とおき

토오끼

백준

[백준/Python3] 1934, 2609, 5347 등 def 를 이용한 최대공약수, 최소공배수 구하기.

2022. 5. 2. 19:55
 

문제

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

입력

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

출력

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

예제 입력 1

24 18

예제 출력 1

6
72

 


동일한(비슷한) 문제 이므로 최대공약수와, 최소공배수를 모두 출력하는 문제를 풀어보겠습니다.

 

이 문제 풀이는 '유클리드 호재법' 을 기반으로 작성되었습니다.

 

def 을 이용하여 gcd(최대공약수) 함수를 만들어보겠습니다.

 

def gcd(a, b): #최대공약수
    while b > 0: # > 사용하거나 != 사용해도 되는듯 함
        a, b = b, a % b # a 가 b 보다 크지 않으면, a 와 b 의 자리를 바꾸고, 계산을 진행하는 코드
    return a

 

 

 

 

def 를 이용하여 lcd(최소공배수) 함수를 만들어 보겠습니다.

def lcm(a, b): #최소공배수
    lcm = a * b // gcd(a, b) # 유클리드 호재법에 의거 최소공배수는 a 와 b 의 곱에 최대공약수를 나누어 구할 수 있음
    return lcm

두 함수를 사용하여 값을 출력하는 코드를 작성하시면 끝 입니다.

def gcd(a, b):
    while b > 0:
        a, b = b, a % b
    return a

def lcm(a, b):
    lcm = a * b // gcd(a, b)
    return lcm

a,b = map(int, input().split())
print(gcd(a, b))
print(lcm(a, b))

 

'백준' 카테고리의 다른 글

[백준/Python3] 1157번: 단어 공부  (0) 2022.05.05
[백준/Python3] 1356번 유진수  (0) 2022.05.05
[백준/Python3] 2675번: 문자열 반복  (0) 2022.04.18
[백준/Python3] 10809번: 알파벳 찾기  (0) 2022.04.18
[백준/Python3] 3052번: 나머지  (0) 2022.04.17
    '백준' 카테고리의 다른 글
    • [백준/Python3] 1157번: 단어 공부
    • [백준/Python3] 1356번 유진수
    • [백준/Python3] 2675번: 문자열 반복
    • [백준/Python3] 10809번: 알파벳 찾기
    とおき
    とおき

    티스토리툴바