ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

获取python 3中的质数列表

2019-11-09 01:57:10  阅读:18  来源: 互联网

标签:python



初学者.我正在尝试返回一个列表,其中包括从0到num的所有素数.有人可以帮我找到我的代码有什么问题吗?我总是得到一个空名单.非常感谢! (我正在使用python 3.6)

def task(num):
    num = int(num)
    lst = []
    if num < 3:
        return lst
    else:
        for i in range(3,num):       
            if not i & 1:
                lst = lst
            else:
                primetest = range(3, int(i ** 0.5) + 1, 2)
                for n in primetest:
                    if i % n != 0:
                        lst.append(i)

    return lst

task(5)

更新:

谢谢大家的评论!真的很有帮助.

这是我修改后的代码的样子.

def task(num):
  num = int(num)
  lst = []

  if num < 2:
    return lst

  if num >= 2:
    lst.append(2)

  for i in range(3, num + 1):       
    if i % 2 == 1:
      switch = True
      for n in range(3, int(i ** 0.5) + 1, 2):
        if i % n == 0:
          switch = False  
          break        
      if switch:
        lst.append(i)

  return lst

解决方法:

主要问题在于您的内部for循环:

使用您的代码,每当您在primetestrange中找到一个不等于i的因数的数字时,都将在列表后附加i.

您可能想在此处使用布尔值来存储找到i的除数的事实,然后仅将其追加到列表中(如果没有).

要回答您的问题,您的列表为空,因为在示例中primetestrange始终为空:

int(3**0.5) + 1 = 3  and   int(5**0.5) + 1 = 3
range(3,3,2) = []

该数组为空,因为范围函数将不包括上限,并且由于内部循环未执行代码中应做的工作,因此结果将是一个空列表,直到task函数的参数为​​优或等于9



标签:python

专注分享技术,共同学习,共同进步。侵权联系[admin#icode9.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有