05. 다섯 번째 수업: 유리수의 곱셈과 나눗셈 (Multiplication & Division)
유리수의 덧셈과 뺄셈에서는 조각 크기를 똑같이 맞추는 눈물겨운 ‘통분’ 과정이 필요했습니다. 하지만 곱셈과 나눗셈의 세계에서는 통분이라는 고통스러운 작업이 전혀 필요하지 않습니다!
1. 곱셈: 위는 위끼리, 아래는 아래끼리
분수의 곱셈은 가장 원초적이고 깔끔한 규칙을 가집니다.
- 분모끼리 곱해서 새로운 분모를 만든다.
- 분자끼리 곱해서 새로운 분자를 만든다.
왜 이럴까요? $\frac{1}{2}$ 에 $\frac{1}{3}$ 을 곱한다는 것은, “절반($1/2$) 짜리 피자를 다시 $3$등분($1/3$) 해서 한 조각을 가져오라”는 의미입니다. 전체 피자를 기준으로 보면, $2$번 잘린 것을 $3$번 더 잘게 잘랐으니 총 $6$조각($2 \times 3$)이 되고, 그중 $1$조각($1 \times 1$)을 의미하므로 $\frac{1}{6}$ 이 되는 것입니다.
2. 역수 (Reciprocal): 분자 분모 뒤집기
나눗셈을 이해하기 전에 역수(Reciprocal)의 개념을 알아야 합니다. 역수란, 두 유리수를 곱했을 때 결과가 완벽한 $1$이 되게 만드는 마법의 파트너입니다. 분수 상태에서는 단순히 “위(분자)와 아래(분모)의 위치를 홀라당 뒤집은 수”가 바로 역수입니다.
- $\frac{3}{4}$ 의 역수 $\rightarrow \frac{4}{3}$ (이유: $\frac{3}{4} \times \frac{4}{3} = \frac{12}{12} = 1$)
- $5$ 의 역수 $\rightarrow \frac{1}{5}$ (이유: $5 = \frac{5}{1}$ 이므로 뒤집으면 $\frac{1}{5}$)
3. 나눗셈: 나누기는 역수를 ‘곱하기’로 바꾼다!
분수의 나눗셈은 사실 곱셈의 복사판입니다. 나누기($\div$) 기호를 곱하기($\times$)로 바꾸고, 바로 뒤에 있는 분수를 ‘역수(위아래 뒤집기)’로 바꿔버리면 됩니다.
\[\frac{a}{b} \div \frac{c}{d} = \frac{a}{b} \times \frac{d}{c} = \frac{a \times d}{b \times c}\]예를 들어 볼까요? 피자 $3$판을 $1/2$판(반 판)씩 나누어 포장하려고 합니다. 총 몇 상자가 나올까요? \(3 \div \frac{1}{2} = 3 \times \frac{2}{1} = 6 \text{상자!}\) 이처럼 나눗셈은 거꾸로 곱하는 메커니즘을 통해 직관적이고 빠르게 해결할 수 있습니다.
4. 부호의 결정 규칙 (적의 적은 나의 친구)
음수가 섞였을 때는 덧셈/뺄셈과는 다른 절대 규칙이 적용됩니다.
- $(+) \times (+) = (+)$ : 긍정과 긍정이 만나면 긍정
- $(+) \times (-) = (-)$ : 플러스와 마이너스가 만나면 빚이 늘어나므로 마이너스
- $(-) \times (-) = (+)$ : “나의 빚(-)을 훔쳐간 도둑(-)은 나의 은인(+)이다!” 마이너스 두 개가 곱해지면 거짓말처럼 양수($+$)가 됩니다. 나눗셈도 완전히 똑같습니다.
5. 파이썬과 Fraction의 마법 연산
컴퓨터 내부에서도 수학과 똑같은 방식으로 나눗셈을 역수의 곱셈으로 처리합니다. 아래 파이썬 코드를 통해 결과를 확인해 보세요!
# [Python] 유리수의 곱셈과 나눗셈 증명하기
from fractions import Fraction
# 두 개의 유리수 생성
frac_A = Fraction(-3, 4) # -3/4
frac_B = Fraction(1, 2) # 1/2
print(f"A = {frac_A}")
print(f"B = {frac_B}")
print("-" * 30)
# 1. 곱셈
print(f"[곱셈] A * B = {frac_A * frac_B}")
# 2. 나눗셈
print(f"[나눗셈] A / B = {frac_A / frac_B}")
# 3. 나눗셈 공식 증명 (역수 곱하기)
reciprocal_B = Fraction(frac_B.denominator, frac_B.numerator) # 뒤집기 (2/1)
proof_div = frac_A * reciprocal_B
print(f"[검증] A * (B의 역수 {reciprocal_B}) = {proof_div}")
if (frac_A / frac_B) == proof_div:
print("-> 마법 증명 성공! 나누기는 역수 곱하기와 결과가 100% 동일합니다.")
[실행 결과]
A = -3/4
B = 1/2
------------------------------
[곱셈] A * B = -3/8
[나눗셈] A / B = -3/2
[검증] A * (B의 역수 2) = -3/2
-> 마법 증명 성공! 나누기는 역수 곱하기와 결과가 100% 동일합니다.