03. 세 번째 수업: 유리수의 대소 비교 (Comparing Rationals)

양수끼리 비교할 때는 통장에 돈이 많을수록 좋으므로 절대 숫자가 큰 쪽이 이깁니다. 하지만 빚(음수)이 있다면 어떨까요? 이번 시간에는 부호(+, -)와 분모가 다를 때 유리수의 크기를 어떻게 공평하게 비교하는지 알아봅니다.


1. 양수와 음수의 기본 생태계

수직선의 0을 기준으로, 양수는 0보다 크고 오른쪽으로 갈수록 커집니다. 반면 음수는 0보다 작고 빚이 많음을 의미하므로, 왼쪽으로 갈수록 숫자가 오히려 작아집니다.

  1. 양수 > 0 > 음수: (통장 잔고 1억 > 0원 > 빚 1억)
  2. 양수끼리의 비교: 절댓값이 큰 숫자가 더 크다. ($+5 > +3$)
  3. 음수끼리의 비교: “빚이 적은 쪽이 부자다!” 즉, 절댓값이 작은 쪽이 더 크다. ($-3 > -5$)

2. 분모가 다르면 어떻게 비교할까? (통분)

분수에서 $\frac{3}{5}$ 와 $\frac{5}{8}$ 중 누가 더 클까요? 분모가 달라서 조각의 모양과 크기가 제각각이면 육안으로 비교할 수 없습니다. 이때 필요한 마법이 바로 “통분 (분모 통일)” 입니다.

이는 앞 시간에 배운 ‘크기가 같은 분수’ 규칙을 이용하여 두 분수의 분모를 서로의 최소공배수(LCM) 로 맞추어 주는 작업입니다.

  1. 분모 5 와 8 의 최소공배수를 구합니다. $\rightarrow 40$
  2. $\frac{3}{5} = \frac{3 \times 8}{5 \times 8} = \frac{24}{40}$
  3. $\frac{5}{8} = \frac{5 \times 5}{8 \times 5} = \frac{25}{40}$

분모(조각의 크기)가 완전히 같아졌으니, 이제 분자(조각의 개수)만 비교하면 됩니다. $25$가 $24$보다 크므로 정답은 $\frac{5}{8} > \frac{3}{5}$ 입니다.


분모가 다른 두 분수의 파이 조각들을 최소공배수 조각으로 더욱 잘게 썰어서 공평하게 비교하는 SVG 인터랙티브 시각화 그래픽

3. 파이썬과 fractions 모듈을 통한 절대 비교법!

우리가 종이에서 통분을 하듯, 컴퓨터는 내부적으로 두 분수를 교차 곱셉하거나 소수(Float)로 변환하여 순식간에 크기를 비교해냅니다. 파이썬의 표준 라이브러리인 fractions 모듈을 사용하면 통분하는 고생 없이 아주 직관적이고 완벽한 소수점 오차 없는 비교가 가능합니다!

# [Python] 파이썬 내장 기능을 활용해 유리수(분수)를 생성하고 대소 비교하기
from fractions import Fraction

# 두 유리수를 Fraction 객체로 깔끔하게 묶어서 생성합니다.
frac_A = Fraction(3, 5)   # 3 / 5
frac_B = Fraction(5, 8)   # 5 / 8

print(f"A = {frac_A}")
print(f"B = {frac_B}")

# 파이썬은 내부적으로 분모를 통분해주기 때문에 부등호(>)를 바로 사용할 수 있습니다!
if frac_A > frac_B:
    print("결과: A 가 B 보다 큽니다!")
elif frac_A < frac_B:
    print("결과: B 가 A 보다 큽니다!")
else:
    print("결과: A 와 B 의 크기가 완벽히 같습니다!")

# 수학 원리를 코드로 직접 짜본다면 (크로스 곱셈기법)?
# (3/5) > (5/8) ? -> 양변에 40을 곱하는 셈이므로 3*8 > 5*5 비교
if (3 * 8) > (5 * 5):
    print("크로스 곱셈: A가 더 크네!")
else:
    print("크로스 곱셈: B가 더 크네!")

[실행 결과]

A = 3/5
B = 5/8
결과: B 가 A 보다 큽니다!
크로스 곱셈: B가 더 크네!

이처럼 프로그래밍을 할 때 유리수의 크기 비교가 필요하면, 복잡한 통분 없이 Fraction과 부등호 하나만으로 모든 논리 비교를 컴퓨터에 떠넘겨 버릴 수 있습니다!

서브목차