5/5 - (1 bình chọn)

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ề:

  1. Bài 21: Tìm Những Số Chia Hết Cho 3 bằng Python mới nhất
  2. Bài 22: Đếm Số Lượng Số Chia Hết Cho 3 Bằng Python
  3. Bài 23 : Tính Tổng Những Số Chẵn Bằng Python
  4. Bài 24 Tính Tổng Những Số Chia Hết Cho 3 Hoặc 5 Bằng Python
  5. Bài 25: Đếm Số Ước Của Số Nguyên n Bằng Python
  6. Bài 26 – Tính Tổng Những Số Chia Hết Cho 3 và 5 bằng Python
  7. Bài 27: Kiểm tra số nguyên tố bằng Python (2 cách tối ưu)

  8. Bài 28: Tính Tổng Các Số Nguyên Từ m Đến n Bằng Python
  9. Bài 29: Đếm Số Chia Hết Cho 3 Từ m Đến n Bằng Python
  10. 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ả 35.

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 35 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 đến n.
  • Kiểm tra nếu số đó chia hết cho cả 35.
  • 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 đến n.

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ủa d từ 1 đến n bằng công thức cấp số cộng.
  • Ta tính tổng bội số của 35, nhưng do các bội số chung của 35 (tức là bội số của 15) bị tính hai lần, nên ta phải trừ đi tổng bội số của 15.
  • Đâ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 35 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

Vi Tính Tấn Dân

Mình rất đam mê về máy vi tính và máy in. Và mình đã đeo đuổi ước mơ và làm việc về máy vi tính mới đây mà đã 15 năm. Mình thích chia sẻ mọi kiến thức và kinh nghiệm mà mình có được cho tất cả các bạn ! Trong khi mình viết nếu có điều gì thiếu sót mong các bạn thông cảm cho mình nhé ! Mình Cám ơn trước !

Published by
Vi Tính Tấn Dân

Recent Posts

100 triệu là mức lương của lập trình Python vì sao?

100 triệu là mức lương của lập trình Python vì sao? 1. Vì sao Python…

4 ngày ago

15 Học Python – Cộng Trừ Căn Bậc Hai bằng Python mới 2025

Bài 15: Cộng, Trừ, Căn Bậc Hai bằng Python mới nhất 2025 - 2026 Python…

6 ngày ago

This website uses cookies.