Quảng cáo
2 câu trả lời 188
# Nhập số từ bàn phím
n = int(input("Nhập số tự nhiên n: "))
# Hàm kiểm tra số nguyên tố
def la_so_nguyen_to(n):
if n < 2:
return False
for i in range(2, int(n**0.5) + 1): # Kiểm tra đến căn bậc hai của n
if n % i == 0:
return False
return True
# Kiểm tra và in kết quả
if la_so_nguyen_to(n):
print(f"{n} là số nguyên tố.")
else:
print(f"{n} không phải là số nguyên tố.")
Python
import math
def kiem_tra_so_nguyen_to(n):
"""
Kiểm tra xem một số tự nhiên n có phải là số nguyên tố hay không.
Args:
n: Số tự nhiên cần kiểm tra.
Returns:
True nếu n là số nguyên tố, False nếu không.
"""
# Số nguyên tố phải lớn hơn 1
if n <= 1:
return False
# 2 là số nguyên tố duy nhất là số chẵn
if n <= 3:
return True
# Kiểm tra các số chia hết cho 2 hoặc 3
if n % 2 == 0 or n % 3 == 0:
return False
# Kiểm tra các số có dạng 6k ± 1 từ 5 đến căn bậc hai của n
i = 5
while i * i <= n:
if n % i == 0 or n % (i + 2) == 0:
return False
i += 6
return True
# Nhập số tự nhiên n từ bàn phím
try:
n = int(input("Nhập một số tự nhiên n: "))
if n < 0:
print("Vui lòng nhập số tự nhiên (lớn hơn hoặc bằng 0).")
else:
if kiem_tra_so_nguyen_to(n):
print(f"{n} là số nguyên tố.")
else:
print(f"{n} không phải là số nguyên tố.")
except ValueError:
print("Đầu vào không hợp lệ. Vui lòng nhập một số nguyên.")
Giải thích chương trình:
import math: Mặc dù trong phiên bản này không sử dụng trực tiếp hàm math.sqrt(), nhưng trong các cách triển khai tối ưu hóa khác, việc tính căn bậc hai có thể hữu ích.
def kiem_tra_so_nguyen_to(n):: Định nghĩa một hàm có tên kiem_tra_so_nguyen_to nhận một số tự nhiên n làm đối số.
if n <= 1:: Số 0 và 1 không phải là số nguyên tố, nên hàm trả về False ngay lập tức.
if n <= 3:: Số 2 và 3 là các số nguyên tố.
if n % 2 == 0 or n % 3 == 0:: Kiểm tra xem n có chia hết cho 2 hoặc 3 không. Nếu có, nó không phải là số nguyên tố (ngoại trừ chính 2 và 3 đã được kiểm tra ở bước trên).
i = 5 và while i * i <= n:: Vòng lặp này kiểm tra các ước số có dạng 6k ± 1 (tất cả các số nguyên tố lớn hơn 3 đều có dạng này). Chúng ta chỉ cần kiểm tra đến căn bậc hai của n vì nếu n có một ước số lớn hơn căn bậc hai của nó, thì nó cũng phải có một ước số nhỏ hơn căn bậc hai của nó.
if n % i == 0 or n % (i + 2) == 0:: Kiểm tra xem n có chia hết cho i hoặc i + 2 hay không. Nếu có, nó không phải là số nguyên tố.
i += 6: Tăng i lên 6 để kiểm tra số nguyên tố tiếp theo có dạng 6k ± 1.
return True: Nếu vòng lặp kết thúc mà không tìm thấy ước số nào, thì n là số nguyên tố.
Phần nhập liệu và in kết quả:
n = int(input("Nhập một số tự nhiên n: ")): Yêu cầu người dùng nhập một số tự nhiên từ bàn phím và chuyển đổi nó thành kiểu số nguyên.
try...except ValueError:: Khối này được sử dụng để xử lý trường hợp người dùng nhập một giá trị không phải là số nguyên.
Kiểm tra nếu n là số tự nhiên (lớn hơn hoặc bằng 0).
Gọi hàm kiem_tra_so_nguyen_to(n) để kiểm tra và in kết quả tương ứng.
Cách chạy chương trình:
Lưu đoạn mã trên vào một tệp Python (ví dụ: kiem_tra_nt.py).
Mở cửa sổ dòng lệnh hoặc terminal.
Di chuyển đến thư mục chứa tệp Python.
Chạy chương trình bằng lệnh: python kiem_tra_nt.py
Chương trình sẽ yêu cầu bạn nhập một số tự nhiên. Nhập số và nhấn Enter để xem kết quả.
Quảng cáo
Bạn muốn hỏi bài tập?
Câu hỏi hot cùng chủ đề
-
55309
-
31164
-
29752
