- 기약분수의 형태를 가지기 위해서 최대공약수를 적절히 활용해서 코드를 작성했다.
입력
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