33 Học Python – Tính trung bình cộng các số nguyên tố từ m đến n
DANH SÁCH TÓM TẮT:
Bài 33: Tính Trung Bình Cộng Các Số Nguyên Tố Từ m Đến n Bằng Python
Giới Thiệu
Bài toán tính trung bình cộng các số nguyên tố trong một khoảng [m, n] là một bài toán quan trọng trong lập trình. Số nguyên tố là số tự nhiên lớn hơn 1, chỉ chia hết cho 1 và chính nó. Bài viết này sẽ hướng dẫn cách giải quyết bài toán này bằng Python một cách hiệu quả.
Ư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 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
- Bài 31: Đếm Số Nguyên Tố Trong Khoảng Từ m Đến n Bằng Python
- Bài 32 : In Các Số Nguyên Tố Từ m Đến n Bằng Python
- Bài 33: Tính Trung Bình Cộng Các Số Nguyên Tố Từ m Đến n Bằng Python
- Bài 34: Tìm Ước Chung Lớn Nhất (UCLN) của Hai Số Nguyên Dương a, b bằng Python
- Bài 35: Rút Gọn Phân Số Bằng Python
Cách Xác Định Số Nguyên Tố
Một số x là số nguyên tố nếu:
- x > 1.
- Không tồn tại số d nào (2 ≤ d ≤ sqrt(x)) mà x % d == 0.
Viết Chương Trình Python
Dưới đây là chương trình Python để tính trung bình cộng các số nguyên tố trong đoạn [m, n].
import math # Hàm kiểm tra số nguyên tố def la_so_nguyen_to(x): if x < 2: return False for i in range(2, int(math.sqrt(x)) + 1): if x % i == 0: return False return True # Hàm tính trung bình cộng các số nguyên tố trong đoạn [m, n] def tinh_trung_binh_nguyen_to(m, n): primes = [i for i in range(m, n + 1) if la_so_nguyen_to(i)] if len(primes) == 0: return 0 # Tránh chia cho 0 nếu không có số nguyên tố nào return sum(primes) / len(primes) # Nhập giá trị m và n từ người dùng m = int(input("Nhập số nguyên m: ")) n = int(input("Nhập số nguyên n: ")) # Kiểm tra điều kiện m phải nhỏ hơn hoặc bằng n if m > n: print("Giá trị m phải nhỏ hơn hoặc bằng n.") else: avg = tinh_trung_binh_nguyen_to(m, n) print(f"Trung bình cộng các số nguyên tố từ {m} đến {n} là: {avg}")
Giải Thích Chương Trình
- Hàm la_so_nguyen_to(x): Kiểm tra số x có phải số nguyên tố không bằng cách kiểm tra ước số từ 2 đến sqrt(x).
- Hàm tinh_trung_binh_nguyen_to(m, n): Lọc ra các số nguyên tố trong đoạn [m, n], tính tổng và chia cho số lượng phần tử.
- Nhập giá trị m và n: Nhận hai số nguyên từ người dùng.
- Kiểm tra điều kiện m ≤ n: Đảm bảo khoảng hợp lệ trước khi tính toán.
- Hiển thị kết quả: Xuất giá trị trung bình cộng các số nguyên tố tìm được.
Cách Tối Ưu Bằng Sàng Eratosthenes
Một cách tối ưu hơn là sử dụng thuật toán Sàng Eratosthenes để tìm tất cả số nguyên tố trong khoảng [m, n] nhanh hơn.
# Hàm sử dụng Sàng Eratosthenes để tìm số nguyên tố def sang_eratosthenes(n): is_prime = [True] * (n + 1) is_prime[0], is_prime[1] = False, False for i in range(2, int(math.sqrt(n)) + 1): if is_prime[i]: for j in range(i * i, n + 1, i): is_prime[j] = False return is_prime # Hàm tính trung bình cộng các số nguyên tố từ m đến n def tinh_trung_binh_nguyen_to_sang(m, n): primes = sang_eratosthenes(n) prime_list = [i for i in range(m, n + 1) if primes[i]] if len(prime_list) == 0: return 0 # Tránh chia cho 0 return sum(prime_list) / len(prime_list) # Nhập giá trị m và n từ người dùng m = int(input("Nhập số nguyên m: ")) n = int(input("Nhập số nguyên n: ")) # Kiểm tra điều kiện if m > n: print("Giá trị m phải nhỏ hơn hoặc bằng n.") else: avg = tinh_trung_binh_nguyen_to_sang(m, n) print(f"Trung bình cộng các số nguyên tố từ {m} đến {n} là: {avg}")
Giải Thích Cách Tối Ưu
- Sàng Eratosthenes: Tạo một danh sách đánh dấu các số nguyên tố, sau đó chỉ cần lọc ra các số nguyên tố trong đoạn [m, n].
- Độ phức tạp O(n log log n): Nhanh hơn so với kiểm tra từng số riêng lẻ (O(n√n)).
Ứng Dụng
- Tính toán trung bình cộng của tập hợp số nguyên tố trong một khoảng.
- Ứng dụng trong phân tích dữ liệu, thống kê và thuật toán số học.
Kết Luận
Bài toán tính trung bình cộng các số nguyên tố từ m đến n có thể giải quyết bằng nhiều cách. Cách kiểm tra từng số dễ hiểu nhưng chậm, trong khi Sàng Eratosthenes giúp tối ưu hiệu suất đáng kể. Hy vọng bài viết này giúp bạn hiểu rõ hơn về cách triển khai thuật toán này trong Python!
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