簡體   English   中英

查找素數和非素數:Python

[英]Find the prime and non prime numbers: Python

我試圖修改程序以創建兩個空列表:prime和non_prime。 並測試列表中的隨機數是否是質數。 如果數字是素數,我想將其附加到素數列表中。 如果沒有,我希望能夠將其添加到non_prime列表中。 我試圖從隨機數列表中找到素數和非素數,但是素數和非素數的輸出相同。 誰能幫我?

 import random

 def main():
      num = [random.randint(1,100) for _ in range (20)]
      print(num)

      lowest = min(num)
      print("The lowest number is: ", lowest)

      highest = max(num)
      print("The highest number is: ", highest)

     total = 0.0
     for value in num:
        total += value

     average = total / len(num)
     print("The average is: " , average)


     prime = [num]
     for a in range (1, 101):
        for b in range(2, a):
            if a % b == 0:
                break
        else:
            prime.append(a)
     print("The prime numbers are: " , prime)

    nonprime = [num]
    for x in range (1, 101):
        for y in range(2, x):
            if x % y == 0:
                break
        else:
            nonprime.append(x)
    print("The non prime numbers are: " , nonprime)

您可以使用我方便的單線首選檢查器!

def is_prime (x): return True if x in [2,3] else not any (x % n == 0 for n in range (2, int (x ** 0.5) + 1))

現在,您可以在for循環中使用此函數:

for num in range (1, 101): 
    if is_prime (num): prime.append (x)
    else: nonprime.append (x)

順便說一句,如果有人想幫助我改進該功能(或者只是想了解它),請在下面評論! 它幾乎構成了所有因素的列表,然后根據該列表的長度返回true或false(如果num是2或3,則返回True)。

只是一個優化技巧。 在第一個循環中,您可以計算非素數和素數。

def isPrime(x):
    for i in range (sqrt (x)): # from i=2 till sqrt(x)
        if x % i == 0: return False
    return True

if isPrime (x): prime.append (x)
else: non_prime.append (x)

上面是篩算法

暫無
暫無

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

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