为什么此列表不显示我,素数

问题描述

我正在使用列表,正在制作一个数字列表,然后仅将此列表的质数添加到另一个列表中,一切正常,直到我到达要确认的代码部分为止这个数字是素数,如果没有丢失,这不是我的代码

List = []
Primes = []
x = 0
for i in range(0,6):
    List.append(int(input()))

flag = False
for e in List:
    print(e)
    for div in range(2,e):
        if e%div == 0:
            flag = True
    if flag == False:
        Primes.append(e)
        
        
print(List)
print(Primes)

我得到这个输出

[1,42,5,8,7,56,2,34]
[]

解决方法

这似乎可行:

List = []
Primes = []
x = 0
for i in range(0,6):
    List.append(int(input()))


for e in List:
    flag = False
    #print(e)
    if e == 1:
      print("1 is neither prime nor composite")
    else:
      for div in range(2,e):
         if e%div == 0:
            flag = True
      if flag == False:
         Primes.append(e)
        
        
print(List)
print(Primes)

一个问题是,每次测试后都没有将flag设置为False

还请注意,大多数人认为1不是素数也不是合成数,所以我也补充说

,

这将为您提供清单的素数:

from math import sqrt
from itertools import count,islice

l = range(6)

def is_prime(n):
    return n > 1 and all(n % i for i in islice(count(2),int(sqrt(n)-1)))

primes = [i for i in l if is_prime(i)]