Tin học lớp 4-5 - Bài 17: Phân số với Python - ƯCLN, rút gọn, so sánh, cộng (Python & Toán)

Bài 17: Phân số với Python — ƯCLN, rút gọn, so sánh và cộng

🎯 Mục tiêu bài học: Em sẽ học cách dùng Python để làm việc với phân số: tìm ƯCLN (ước chung lớn nhất), rút gọn phân số, so sánh hai phân số và cộng hai phân số — những bài toán quen thuộc ở lớp 4-5.
68chia cả hai cho ƯCLN = 26:2=3   8:2=434Rút gọn phân số: chia tử số và mẫu số cho ƯCLN.
Trong môn Toán, phân số 6/8 có thể rút gọn thành 3/4 bằng cách chia cả tử số và mẫu số cho cùng một số. Số tốt nhất để chia là ƯCLN. Tính ƯCLN bằng tay hơi lâu, nhưng Python có sẵn lệnh math.gcd làm ngay!

1. Tìm ƯCLN bằng math.gcd

Lệnh math.gcd(a, b) trả về ƯCLN của hai số a và b. Nhớ viết import math ở đầu chương trình.
ƯCLN của 6 và 8 là gì?Ước của 61, 2, 3, 6Ước của 81, 2, 4, 8chung: 1, 2chung: 1, 2ƯCLN = ước chung lớn nhất = 2
ƯCLN là số lớn nhất chia hết cả tử số và mẫu số. Python tính giúp bằng math.gcd.
import math
print(math.gcd(6, 8))    # 2
print(math.gcd(12, 18))  # 6
💡 Mẹo: gcd là viết tắt tiếng Anh của "ước chung lớn nhất" (greatest common divisor).

2. Rút gọn phân số

Để rút gọn phân số tu / mau, ta chia cả hai cho ƯCLN của chúng. Kết quả là phân số tối giản.
import math
tu = 6
mau = 8
uc = math.gcd(tu, mau)
print(tu // uc, "/", mau // uc)   # 3 / 4
💡 Mẹo: Dùng dấu // (chia lấy phần nguyên) vì tử số và mẫu số luôn là số nguyên.

3. So sánh hai phân số

Muốn biết 2/3 hay 3/5 lớn hơn, ta quy đồng bằng cách nhân chéo: so sánh 2×5 với 3×3. Số nào lớn hơn thì phân số đó lớn hơn.
# So sanh 2/3 va 3/5
trai = 2 * 5    # 10
phai = 3 * 3    # 9
if trai > phai:
    print("2/3 lon hon 3/5")
💡 Mẹo: Nhân chéo là cách nhanh để so sánh: 2/3 và 3/5 → so 2×5 với 3×3.

4. Cộng hai phân số

Cộng 1/2 + 1/3: mẫu chung là 2×3 = 6. Tử số mới = 1×3 + 1×2 = 5. Kết quả là 5/6.
# Cong 1/2 + 1/3
tu1, mau1 = 1, 2
tu2, mau2 = 1, 3
mau = mau1 * mau2
tu = tu1 * mau2 + tu2 * mau1
print(tu, "/", mau)    # 5 / 6
💡 Mẹo: Sau khi cộng, em có thể rút gọn kết quả bằng math.gcd như ở phần 2.

5. Gộp lại: cộng rồi rút gọn

Sau khi cộng được tu / mau, ta chia cả hai cho math.gcd(tu, mau) để ra phân số tối giản. Ví dụ 2/6 rút gọn thành 1/3.
import math
tu, mau = 2, 6
uc = math.gcd(tu, mau)
print(tu // uc, "/", mau // uc)   # 1 / 3
🎯 Ghi nhớ: Công thức phân số với Python: math.gcd tìm ƯCLN, dấu // để rút gọn, nhân chéo để so sánh và cộng.

📋 Bảng ghi nhớ phân số

ViệcCách làmVí dụ
Tìm ƯCLNmath.gcd(a, b)math.gcd(6, 8) = 2
Rút gọnchia cả hai cho ƯCLN6/8 → 3/4
So sánhnhân chéo2/3 vs 3/5 → 10 vs 9
Cộngquy đồng rồi cộng tử số1/2 + 1/3 = 5/6

✎ Luyện tập: 5 câu trắc nghiệm

Câu 1. ƯCLN của 68 là bao nhiêu?

Ước của 6 là 1,2,3,6; ước của 8 là 1,2,4,8. Ước chung lớn nhất là 2.

Câu 2. Phân số 6/8 rút gọn thành phân số nào?

Chia cả tử số và mẫu số cho ƯCLN = 2: 6:2=3 và 8:2=4, được 3/4.

Câu 3. Lệnh nào tính ƯCLN của 12 và 18 trong Python?

math.gcd(12, 18) trả về ƯCLN là 6. Nhớ import math trước.

Câu 4. Để so sánh 2/33/5 bằng cách nhân chéo, ta so sánh hai số nào?

Nhân chéo: tử số trái nhân mẫu phải (2×5=10) và tử số phải nhân mẫu trái (3×3=9). Vì 10>9 nên 2/3 lớn hơn.

Câu 5. Cộng 1/2 + 1/3 được kết quả nào?

Mẫu chung = 2×3 = 6. Tử số = 1×3 + 1×2 = 5. Kết quả 5/6.

💻 Thực hành: Chạy Python ngay trên trình duyệt

Hãy thử: Chương trình dưới cộng hai phân số rồi rút gọn kết quả. Đổi các số tu1, mau1, tu2, mau2 rồi bấm Chạy!
(Kết quả sẽ hiện ở đây sau khi em bấm Chạy)
🎉 Thử thách: Đổi thành 2/6 + 1/6 rồi chạy. Kết quả sau khi rút gọn có phải là 1/2 không?