본문 바로가기
백준

[백준] 2609번 : 최대공약수와 최소공배수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 7. 13.
728x90
반응형

 

 

2609번: 최대공약수와 최소공배수

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

www.acmicpc.net

 

1. 문제 설명

2. 풀이과정

  1. sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys
  2. 두 수를 입력받는다. num1, num2 = map(int, sys.stdin.readline().split())
  3. 최대공약수를 저장할 변수를 생성하고 1로 초기화한다. Max = 1
  4. 나눌 변수를 생성하고 1초 초기화한다. i = 1
  5. 원하는 시점에서 종료하기 위해 무한 반복문을 사용한다. while (True)
  6. 만약 두 수가 모두 나누어 떨어지면 if (num1 % i == 0) and (num2 % i == 0)
  7. 최대공약수에 저장한다. Max = i
  8. 그리고 나누는 수를 1 증가시킨다. i += 1
  9. 만약 나누는 수가 두 수 중 어느 수보다 커지면 최대공약수를 구할 수 없으므로 종료한다.  if (num1 < i) or (num2 < i): break
  10. 최대공약수를 출력한다. print(Max)
  11. 최소공배수도 출력한다. 두 수의 최소공배수는 최대공약수와 두 수를 각각 최대공약수로 나눈 몫을 모두 곱하면 된다. print(Max * (num1 // Max) * (num2 // Max))
반응형

3. 소스코드

import sys

num1, num2 = map(int, sys.stdin.readline().split())

Max = 1
i = 1
while (True):
    if (num1 % i == 0) and (num2 % i == 0):
    	Max = i
    i += 1
    if (num1 < i) or (num2 < i):
        break

print(Max)
print(Max * (num1 // Max) * (num2 // Max))
728x90
반응형