Tại sao code kiểm tra nguyên tố báo 7 không là số nguyên tố?

Code này có bị gì không ạ? Sao mà chạy nó cứ bào 7 không là số nguyên tố?

def KTSNT(n):
    if n<2:
        return 0
    else:
        for i in range(2, n+1):
            if n%i==0:
                return 0
n=int(input("Mời bạn nhập số: "))
if KTSNT(n)==0:
    print(n, "không phải là số nguyên tố.")
else:
    if KTSNT(n)==1:
        print(n, "là số nguyên tố.")

Bạn lấy giải thuật này ở đâu ra? Mình không thấy có cái giải thuật kiểm tra số nguyên tố nào như bạn cả. Phát biểu giải thuật bằng lời xem sao. Nếu không thể phát biểu được bằng lời (1 đoạn văn) thì nên tham khảo cái này https://codelearn.io/sharing/thuat-toan-kiem-tra-tinh-nguyen-to

Bài của bạn thì số nào cũng không là số nguyên tố cả, dám cá luôn.

4 Likes

bị gì là bị gì, bạn không hiểu đoạn code này hay sao? bạn không hiểu lệnh nào
sao bạn không tự chạy bằng tay với số 7 và kiểm chứng từng bước xem coi có chay sai hay không?

3 Likes

range(2, int(math.sqrt(n))+1) thôi là được rồi :smiley:
hoặc thay bằng int(n**0.5)+1 nếu ko import.

4 Likes

Cho i chạy từ 2 đến n có nghĩa là sẽ đến lúc n%i sẽ là n%n => chắc chắn bằng 0.
Thuật toán của bạn trả về 0 cho mọi số.

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?