【问题标题】:Why this list isn't showing me, prime numbers为什么这个列表没有显示我,素数
【发布时间】:2021-02-15 16:38:46
【问题描述】:

我正在练习使用列表,我正在制作一个数字列表,然后只将此列表中的素数添加到另一个列表中,一切都很好,直到我到达我想要确认的代码部分这个数字是素数,如果有什么遗漏,我不会,这是我的代码:

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]
[]

【问题讨论】:

  • 您必须在第一个 for 循环内重置 flag。另请注意,1 不是素数(您的代码会认为它是素数)。
  • 感谢您的回答和推荐,非常感谢

标签: python python-3.x list foreach


【解决方案1】:

这似乎有效:

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 既不是素数也不是合数,所以我也补充了这一点

【讨论】:

    【解决方案2】:

    这将为您提供列表的质数:

    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)]
    

    【讨论】:

      猜你喜欢
      • 2020-11-22
      • 1970-01-01
      • 1970-01-01
      • 2016-03-20
      • 1970-01-01
      • 1970-01-01
      • 2021-09-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多