Học Python - Bài 27 Kiểm tra số n có nguyên tố
DANH SÁCH TÓM TẮT:
Số nguyên tố là số tự nhiên lớn hơn 1, chỉ chia hết cho 1 và chính nó. Trong bài viết này, chúng ta sẽ viết chương trình kiểm tra số nguyên tố bằng hai cách: cách đơn giản và cách tối ưu hơn.
Phương pháp này kiểm tra xem số đó có chia hết cho bất kỳ số nào từ 2
đến n-1
hay không.
# Hàm kiểm tra số nguyên tố (cách đơn giản) def la_so_nguyen_to(n): if n < 2: return False for i in range(2, n): if n % i == 0: return False return True # Kiểm tra n = int(input("Nhập số cần kiểm tra: ")) print(f"{n} là số nguyên tố" if la_so_nguyen_to(n) else f"{n} không phải là số nguyên tố")
n < 2
, kết quả trả về False
(không phải số nguyên tố).2
đến n-1
, nếu tìm thấy số nào mà n
chia hết, trả về False
.n
là số nguyên tố (True
).⏳ Độ phức tạp: O(n) (Chạy chậm nếu n
lớn). ⏳
Thay vì kiểm tra từ 2
đến n-1
, ta chỉ cần kiểm tra từ 2
đến √n. Nếu n
có ước số khác 1
và n
, nó chắc chắn nằm trong đoạn 2 → √n
.
import math # Hàm kiểm tra số nguyên tố (cách tối ưu) def la_so_nguyen_to_toi_uu(n): if n < 2: return False if n in (2, 3): return True if n % 2 == 0 or n % 3 == 0: return False for i in range(5, int(math.sqrt(n)) + 1, 2): # Chỉ kiểm tra số lẻ từ 5 trở đi if n % i == 0: return False return True # Kiểm tra n = int(input("Nhập số cần kiểm tra: ")) print(f"{n} là số nguyên tố" if la_so_nguyen_to_toi_uu(n) else f"{n} không phải là số nguyên tố")
n
nhỏ hơn 2, không phải số nguyên tố.n
là 2 hoặc 3, chắc chắn là số nguyên tố.n
chia hết cho 2 hoặc 3, nó không phải số nguyên tố.5
đến √n
, kiểm tra các số lẻ (vì số chẵn đã bị loại trước đó).⏳ Độ phức tạp: O(√n) (Nhanh hơn nhiều so với O(n)).
Phương pháp | Cách hoạt động | Độ phức tạp |
---|---|---|
Vòng lặp đơn giản | Kiểm tra từ 2 đến n-1 | O(n) |
Căn bậc hai (Tối ưu) | Kiểm tra từ 2 đến √n (loại bỏ số chẵn) | O(√n) |
Cách tối ưu nhanh hơn rất nhiều và nên dùng khi n
lớn!
Chúng ta đã tìm hiểu hai cách kiểm tra số nguyên tố trong Python: một cách dễ hiểu và một cách tối ưu hơn. Nếu bạn muốn kiểm tra số lớn, hãy sử dụng phương pháp căn bậc hai để giảm thời gian tính toán.
Bạn thích cách nào hơn? Hãy thử chạy code và trải nghiệm nhé!
Khóa học Python online từ cơ bản đến nâng cao
2 Đề thi học sinh giỏi Tin học THCS cấp tỉnh Tiền Giang có đáp án SỞ…
1 Đề Thi Học Sinh Giỏi Tin học THCS cấp Tỉnh Tiền Giang có đáp…
Phần 1: Các bài tập dễ và cơ bản làm được các bài này các…
100 triệu là mức lương của lập trình Python vì sao? 1. Vì sao Python…
Bài 71: Đổi tất cả ký tự trong một chuỗi thành ký tự thường bằng…
Bài 26 - Tính Tổng Những Số Chia Hết Cho 3 và 5 bằng Python…
This website uses cookies.