Học Python - Bài 51 Tìm số nguyên tố lớn nhất trong mảng
DANH SÁCH TÓM TẮT:
Giới Thiệu
Trong bài viết này, chúng ta sẽ viết chương trình Python để tìm các số nguyên tố trong một mảng và tính trung bình cộng của chúng. Số nguyên tố là số lớn hơn 1 và chỉ chia hết cho 1 và chính nó.
Cách Xác Định Số Nguyên Tố
Một số là nguyên tố nếu:
Chúng ta sẽ sử dụng hai cách để kiểm tra số nguyên tố:
Chương Trình Python
# Hàm kiểm tra số nguyên tố (Cách cơ bản)
def la_so_nguyen_to(so):
if so < 2:
return False
for i in range(2, int(so**0.5) + 1):
if so % i == 0:
return False
return True
# Hàm tìm các số nguyên tố trong mảng và tính trung bình
def tinh_trung_binh_so_nguyen_to(mang):
danh_sach_nguyen_to = [so for so in mang if la_so_nguyen_to(so)]
if len(danh_sach_nguyen_to) == 0:
return 0
return sum(danh_sach_nguyen_to) / len(danh_sach_nguyen_to)
# Nhập số lượng phần tử của mảng
n = int(input("Nhập số phần tử của mảng: "))
mang = [int(input(f"Nhập phần tử thứ {i+1}: ")) for i in range(n)]
# Tính trung bình số nguyên tố
trung_binh = tinh_trung_binh_so_nguyen_to(mang)
print("Trung bình cộng các số nguyên tố trong mảng:", trung_binh)
# Hàm Sàng Eratosthenes để tìm số nguyên tố nhanh hơn
def sang_eratosthenes(gioi_han):
la_so_nguyen_to = [True] * (gioi_han + 1)
la_so_nguyen_to[0], la_so_nguyen_to[1] = False, False
for i in range(2, int(gioi_han**0.5) + 1):
if la_so_nguyen_to[i]:
for j in range(i * i, gioi_han + 1, i):
la_so_nguyen_to[j] = False
return {x for x in range(gioi_han + 1) if la_so_nguyen_to[x]}
# Hàm tìm số nguyên tố và tính trung bình sử dụng Sàng Eratosthenes
def tinh_trung_binh_so_nguyen_to_toi_uu(mang):
if not mang:
return 0
gioi_han = max(mang)
tap_nguyen_to = sang_eratosthenes(gioi_han)
danh_sach_nguyen_to = [so for so in mang if so in tap_nguyen_to]
if len(danh_sach_nguyen_to) == 0:
return 0
return sum(danh_sach_nguyen_to) / len(danh_sach_nguyen_to)
# Nhập số lượng phần tử của mảng
n = int(input("Nhập số phần tử của mảng: "))
mang = [int(input(f"Nhập phần tử thứ {i+1}: ")) for i in range(n)]
# Tính trung bình số nguyên tố
trung_binh = tinh_trung_binh_so_nguyen_to_toi_uu(mang)
print("Trung bình cộng các số nguyên tố trong mảng:", trung_binh)
| Phương pháp | Độ phức tạp | Ưu điểm | Nhược điểm |
| Kiểm tra từng số | O(n√m) | Dễ hiểu, dễ triển khai | Chậm khi mảng có số lớn |
| Sàng Eratosthenes | O(m log log m) | Tốc độ nhanh hơn với nhiều số | Tốn bộ nhớ hơn |
Trong đó:
Nhập số phần tử của mảng: 6
Nhập phần tử thứ 1: 3
Nhập phần tử thứ 2: 7
Nhập phần tử thứ 3: 10
Nhập phần tử thứ 4: 13
Nhập phần tử thứ 5: 17
Nhập phần tử thứ 6: 20
Trung bình cộng các số nguyên tố trong mảng: 10.0
Bài viết đã hướng dẫn cách tính trung bình cộng số nguyên tố trong mảng bằng hai cách:
Hy vọng bài viết hữu ích cho bạn!
Khóa học Python online từ cơ bản đến nâng cao
Bạn đang tìm kiếm nguồn tài liệu ôn thi học sinh giỏi Tin học lớp…
Phần 2: Tải ngay 200 Bài lập trình Python có lời giải cơ bản đến…
Tổng Hợp Các Hàm Python "Cốt Lõi" Khi Thi HSG Tỉnh Và Vào 10 Chuyên…
Nếu bạn đang ôn thi học sinh giỏi Tin học THCS cấp tỉnh Tiền Giang,…
Tổng Hợp 74 Đề Thi Học Sinh Giỏi Tin Học THCS Cấp Tỉnh Có Đáp…
Tổng hợp 75 Đề thi HSG Tin học THCS Python Cấp Tỉnh (Có Code Giải…
This website uses cookies.