Bài tập trên codelearn bị fail

trên đấy có bài là:Một số nguyên tố là một số tự nhiên lớn hơn 1 và không thể được tạo thành từ tích của hai số tự nhiên nhỏ hơn.
Thực hiện một hàm xác định xem một số nguyên dương đã cho có phải là số nguyên tố hay không.
Ví dụ
Với n = 47, đầu ra là isPrime(n) = true;
Với n = 4, đầu ra là isPrime(n) = false.
Đầu vào/Đầu ra
[giới hạn thời gian chạy] 3 seconds

[đầu vào] integer n
Số nguyên dương.
Điều kiện tiền đề:
0 ≤ n ≤ 1000.

true nếu n là số nguyên tố, false nếu không phải.
[đầu ra] boolean
thì em nhập hàm là

n=input()
def isPrime(n):
    if n <2:
        return False
    for i in range(2,1000):
        if n%i== 0 and i!=n:
            return False
    return True
print(isPrime(n))

hệ thống toàn đấy fail không cho nộp bài :<

Sao không cho lặp đến n (range(2,n)) có phải ổn không? Chính xác là chỉ đến sqrt(n) thôi.

3 Likes

Out là phải. :slight_smile:
range(2,1000) (edited)
Thừa r bạn.
i chỉ cần xét đến n/2 là đủ.
Với lại bạn cũng chỉ nên xét i là số lẻ.
Sửa chỗ n < 2 thành n < 2 or n % 2 == 0 .(edited)

n = input()
def isPrime(n):
    if n < 2 or n % 2 == 0:
        return False
    for i in range(3, n / 2 + 1, 2):
        if n % i == 0:
            return False
    return True
print(isPrime(n))

P/s: Y nguyên trên Discord. :slight_smile:


Edit: Situ ca nói mới nhớ. :sweat_smile:. Bạn sửa luôn n / 2 thành sqrt(n) nha, Nhớ import math or from math import sqrt. :slight_smile:

2 Likes

không biết có phiền bạn không nếu mình có thể nhắn tin trao đổi một tẹo nhỉ ?
bên đấy bắt n phải là nguyên dương từ 0 -1000 :> đau đớn làm sao

N đến 1k là quá nhỏ so với con sô 3 giây, với lại bạn cũng nên ngẫm qua bài trên mình vừa nói. :slight_smile:

2 Likes

mong bạn thông cảm mình mới học lập trình nên không dõ nhiều thứ lắm, 3s có liên quan đến 1k nhiều lắm à bạn :<

Code nhìn sơ qua không bị lỗi cú pháp, 3s với limit n <= 1000 không phải là lớn. Chắc là đề chỉ yêu cầu viết hàm nhưng bạn lại viết thêm input với print kết quả nữa.

3 Likes

em cảm ơn nhiều ạ , tại mới học nên nhiều cái còn phải sửa lắm ạ

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