Nguyên lý giải quyết bài toán này là chia số cho trước cho tất cả các số từ 3 đến căn bậc hai của nó. Căn bậc hai của một số là ước số lớn nhất có thể, sau đó không cần kiểm tra thêm bất kỳ số nào khác để xác định xem nó có phải số nguyên tố hay không.
Hàm trả về False cho tất cả các số chia hết cho 2 và nhỏ hơn 2. Đối với các số còn lại, giá trị trả về của hàm all() sẽ là False nếu nó chia hết cho bất kỳ số nào đến căn bậc hai của nó, và True nếu không chia hết cho số nào.
Ví dụ
def is_prime(a):
if a < 2:
return False
elif a != 2 and a % 2 == 0:
return False
else:
return all(a % i for i in range(3, int(a**0.5) + 1))
num = int(input('Nhập một số: '))
if is_prime(num):
print("{} là số nguyên tố".format(num))
else:
print("{} không phải là số nguyên tố".format(num))Kết quả
Chạy thử chương trình trên:
Nhập một số: 24 24 không phải là số nguyên tố Nhập một số: 47 47 là số nguyên tố