alpyrithm_알파이리즘
[알고리즘][Python] 백준(BOJ) 2436 공약수_파이썬 본문
2436 공약수 www.acmicpc.net/problem/2436
2436번: 공약수
첫째 줄에 두 개의 자연수가 빈칸을 사이에 두고 주어진다. 첫 번째 수는 어떤 두 개의 자연수의 최대공약수이고, 두 번째 수는 그 자연수들의 최소공배수이다. 입력되는 두 자연수는 2 이상 100,0
www.acmicpc.net
문제 풀기 전 공부할 것 : 수학, 정수론, 유클리드 호제법
풀이
<내용>
- 최소공배수는 숫자1 x 숫자2 / 최대공약수이다.
- 최소공배수 x 최대공약수는 숫자1 x 숫자2이다.
- 최소공배수 / 최대공약수는 숫자1' x 숫자2'이다.(이때, 숫자1'과 숫자2'는 서로소이다.)
- 숫자1 = 숫자1' x 최대공약수
- 숫자2 = 숫자2' x 최대공약수
- 숫자1'+숫자2' 중 가장 작은 것을 찾으면 된다.
<코드>
def gcd(a, b):
while b:
mod = b
b = a%b
a = mod
return a
g, l = map(int, input().split())
div = l // g
a, b = 1, div
for i in range(1, div//2+1):
if div % i == 0:
c = i
d = div//i
if gcd(c, d) != 1:
continue
if a+b > c+d:
a = c
b = d
print(a*g, b*g)
728x90
반응형
'Algorithm > 백준 알고리즘_Python' 카테고리의 다른 글
[알고리즘][Python] 백준(BOJ) 11931 수 정렬하기 4_파이썬 (0) | 2020.11.06 |
---|---|
[알고리즘][Python] 백준(BOJ) 2688 줄어들지 않아_파이썬 (0) | 2020.11.05 |
[알고리즘][Python] 백준(BOJ) 9659 돌 게임 5_파이썬 (0) | 2020.11.03 |
[알고리즘][Python] 백준(BOJ) 1620 나는야 포켓몬 마스터 이다솜_파이썬 (0) | 2020.11.02 |
[알고리즘][Python] 백준(BOJ) 4949 균형잡힌 세상_파이썬 (0) | 2020.11.01 |
Comments