簡體   English   中英

確定隨機Int是否為質數

[英]determining if random Int is prime or not

當我需要確定數字x是否是質數時,我有一個小問題。 x將是隨機生成的正整數,執行代碼時會收到以下消息:

Your function fails on is_prime(2). It returns None when it should return True.

我的代碼:

def is_prime(x):
if x < 2:
    return False
else:
    for n in range(2, x):
        while x % n == 0:
            return False
            break
        else:
            return True

我希望while循環遍歷n == 2直到n ==(x-1),但似乎沒有做到! 我究竟做錯了什么?

您可以更簡單地編寫此函數:

import math
def is_prime(n):
    if n % 2 == 0 and n > 2: 
       return False
    for i in range(3, int(math.sqrt(n)) + 1, 2):
        if n % i == 0:
           return False
    return True

因此,您對is_prime(2)的調用不會通過if測試,也不會在for運行中使用,只會返回True。

如果所有其他質數都大於3並且不等於偶數,則應進行測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM