백준
[백준] 2609번 : 최대공약수와 최소공배수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트
우당탕탕 개발자
2023. 7. 13. 17:17
728x90
반응형
2609번: 최대공약수와 최소공배수
첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다.
www.acmicpc.net
1. 문제 설명
2. 풀이과정
- sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys
- 두 수를 입력받는다. num1, num2 = map(int, sys.stdin.readline().split())
- 최대공약수를 저장할 변수를 생성하고 1로 초기화한다. Max = 1
- 나눌 변수를 생성하고 1초 초기화한다. i = 1
- 원하는 시점에서 종료하기 위해 무한 반복문을 사용한다. while (True)
- 만약 두 수가 모두 나누어 떨어지면 if (num1 % i == 0) and (num2 % i == 0)
- 최대공약수에 저장한다. Max = i
- 그리고 나누는 수를 1 증가시킨다. i += 1
- 만약 나누는 수가 두 수 중 어느 수보다 커지면 최대공약수를 구할 수 없으므로 종료한다. if (num1 < i) or (num2 < i): break
- 최대공약수를 출력한다. print(Max)
- 최소공배수도 출력한다. 두 수의 최소공배수는 최대공약수와 두 수를 각각 최대공약수로 나눈 몫을 모두 곱하면 된다. 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
반응형