- 기약분수의 형태를 가지기 위해서 최대공약수를 적절히 활용해서 코드를 작성했다.
입력
2 7
3 5
출력
31 35
+ = + = =
import math
A, B = map(int, input().split())
C, D = map(int, input().split())
denominator = B * D
numerator = A * D + B * C
if math.gcd(denominator, numerator) == 1:
print(numerator, denominator)
else:
temp = math.gcd(denominator, numerator)
denominator //= temp
numerator //= temp
print(numerator, denominator)
📌 유클리드 호제법 알고리즘
유클리드 호제법이란, 숫자 a, b가 있을 때, a를 b로 나눈 나머지
와 b의 최대공약수
는 a와 b의 최대공약수
가 같다.
계속해서 a를 b로 나누어서 b의 값을 a에 대입
하고 a를 b에 나눈 나머지를 b에 대입
시켜서 b가 0이 될 때까지 반복을 하면 남게 되는 a가 최대공약수
가 된다.
def gcd(a, b):
while b > 0:
a, b = b, a % b
return a