寻找作为因素的素数

时间:2017-09-25 16:34:51

标签: python-2.7

我正在尝试返回此代码中作为素数的数字的因子。例如,如果有人进入n = 100,他们会回到2和5.我相信我在检查因素方面有第一部分是正确的,但不知怎的,我不确定我在检查素数的第二部分。

有人可以帮帮我吗?

感谢。

l = []

def factor(n):

    print 'These are the factors:'
    for num in range(2,n):
        if n%num == 0: #checks that it is a factor
            print num #These are the factors
            l.append(num)    

    for i in l: 
        if i%2 == 0 and i > 2: #checks for even numbers
            l.remove(i)

        else:
            for x in range(3,i,2): #checks for odd numbers
                if i%x == 0:
                    l.remove(i)


    print l

1 个答案:

答案 0 :(得分:2)

问题是您在循环浏览时从列表中删除。在幕后,您基本上使用for计数器进行i循环。因此,当您在index = 1上时(在这种情况下值为4),您将其删除并递增索引。结果,值5被移动到之前4所在的位置,并且索引递增。这会导致永远不会检查值5。您对2050的值也是如此。它们永远不会被检查,因此它们不会被移除。