Danh mục: 26 Học Python – Tính Tổng Những Số Chia Hết Cho 3 và 5 Python

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

  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ápThời gian chạyĐộ phức tạpĐộ hiệu quả
Duyệt từng sốChậm với n lớnO(n)Trung bình
Sử dụng công thứcNhanh, tối ưuO(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

 

Khóa học Python online từ cơ bản đến nâng cao