问题描述
我正在使用列表,正在制作一个数字列表,然后仅将此列表的质数添加到另一个列表中,一切正常,直到我到达要确认的代码部分为止这个数字是素数,如果没有丢失,这不是我的代码:
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)]