
26 Học Python – Tính Tổng Những Số Chia Hết Cho 3 và 5 Python
Bài 26 – Tính Tổng Những Số Chia Hết Cho 3 và 5 bằng Python
Python là một ngôn ngữ lập trình mạnh mẽ, linh hoạt và dễ sử dụng, giúp thực hiện các phép toán số học một cách nhanh chóng và chính xác. Trong bài viết này, chúng ta sẽ tìm hiểu cách tính tổng các số chia hết cho 3 và 5 trong một khoảng nhất định bằng hai phương pháp: cách đơn giản và cách tối ưu.
Ưu Đãi lớn thêm danh sách 10 bài tập python rèn luyện kỹ năng và nâng cao tay nghề:
- Bài 21: Tìm Những Số Chia Hết Cho 3 bằng Python mới nhất
- Bài 22: Đếm Số Lượng Số Chia Hết Cho 3 Bằng Python
- Bài 23 : Tính Tổng Những Số Chẵn Bằng Python
- Bài 24 Tính Tổng Những Số Chia Hết Cho 3 Hoặc 5 Bằng Python
- Bài 25: Đếm Số Ước Của Số Nguyên n Bằng Python
- Bài 26 – Tính Tổng Những Số Chia Hết Cho 3 và 5 bằng Python
- Bài 28: Tính Tổng Các Số Nguyên Từ m Đến n Bằng Python
- Bài 29: Đếm Số Chia Hết Cho 3 Từ m Đến n Bằng Python
- Bài 30 Đếm Số Chia Hết Cho 3 Hoặc 5 Và Tính Tổng Các Số Chẵn Bằng Python
1. Bài toán đặt ra
Cho một số nguyên dương n
, hãy tính tổng tất cả các số từ 1
đến n
chia hết cho cả 3
và 5
.
2. Cách tiếp cận đơn giản (Duyệt từng số)
Cách đầu tiên là sử dụng vòng lặp để duyệt từng số từ 1
đến n
và kiểm tra xem số đó có chia hết cho 3
và 5
hay không. Nếu có, ta cộng số đó vào tổng.
✍️ Mã nguồn:
def tinh_tong_don_gian(n):
tong = 0
for i in range(1, n + 1):
if i % 3 == 0 and i % 5 == 0:
tong += i
return tong
# Nhập giá trị n từ người dùng
n = int(input("Nhập số nguyên dương n: "))
print(f"Tổng các số chia hết cho 3 và 5 từ 1 đến {n} là: {tinh_tong_don_gian(n)}")
Giải thích:
- Sử dụng vòng lặp
for
để duyệt qua từng số từ1
đếnn
. - Kiểm tra nếu số đó chia hết cho cả
3
và5
. - Nếu đúng, cộng số đó vào biến
tong
. - Cuối cùng, trả về tổng các số thỏa mãn điều kiện.
✅ Đánh giá:
- Ưu điểm: Dễ hiểu, dễ cài đặt.
- Nhược điểm: Hiệu suất thấp nếu
n
lớn, vì phải duyệt qua tất cả các số từ1
đếnn
.
3. Cách tiếp cận tối ưu (Sử dụng công thức cấp số cộng)
Thay vì duyệt từng số, ta có thể tính tổng trực tiếp bằng công thức của cấp số cộng. Tổng của các số chia hết cho d
trong khoảng từ 1
đến n
là:
total = d * (k * (k + 1)) // 2
Với k = n // d
là số lượng bội số của d
trong khoảng từ 1
đến n
.
✍️ Mã nguồn:
def tinh_tong_toi_uu(n):
def tong_boi_so(d):
k = n // d
return d * (k * (k + 1)) // 2
return tong_boi_so(3) + tong_boi_so(5) - tong_boi_so(15)
# Nhập giá trị n từ người dùng
n = int(input("Nhập số nguyên dương n: "))
print(f"Tổng các số chia hết cho 3 và 5 từ 1 đến {n} là: {tinh_tong_toi_uu(n)}")
Giải thích:
tong_boi_so(d)
tính tổng các bội số củad
từ1
đếnn
bằng công thức cấp số cộng.- Ta tính tổng bội số của
3
và5
, nhưng do các bội số chung của3
và5
(tức là bội số của15
) bị tính hai lần, nên ta phải trừ đi tổng bội số của15
. - Đây là cách tiếp cận hiệu quả hơn vì chỉ cần thực hiện một số phép toán thay vì duyệt qua từng số.
✅ Đánh giá:
- Ưu điểm: Hiệu suất cao, chạy nhanh ngay cả với
n
lớn. - Nhược điểm: Cần hiểu công thức cấp số cộng.
4. So sánh hai phương pháp
Phương pháp | Thời gian chạy | Độ phức tạp | Độ hiệu quả |
---|---|---|---|
Duyệt từng số | Chậm với n lớn | O(n) | Trung bình |
Sử dụng công thức | Nhanh, tối ưu | O(1) | Cao |
5. Ứng dụng thực tế
- ✅ Tính tổng các số theo điều kiện trong phân tích dữ liệu.
- ✅ Ứng dụng trong các bài toán lập trình cạnh tranh.
- ✅ Giảm tải tính toán trong các hệ thống yêu cầu hiệu suất cao.
6. Kết luận
Bài toán tính tổng các số chia hết cho 3
và 5
có thể được giải quyết bằng nhiều cách. Cách tiếp cận đơn giản phù hợp với những ai mới học lập trình, trong khi cách tiếp cận tối ưu giúp tiết kiệm thời gian xử lý. Tùy vào bài toán thực tế, bạn có thể lựa chọn phương pháp phù hợp nhất.
Nếu bạn thấy hay ! xin bạn 1 phút ! vui lòng đánh giá 5 sao cho trang website của chúng tôi ! để có động lực làm thêm nhiều bài hay nữa ! cảm ơn quý khách nhé !
Khóa học Python online từ cơ bản đến nâng cao