python放入列表

时间:2017-11-04 03:39:37

标签: python math factors

def problem(n):
    myList = []
    for i in range(2, n):
        if n % i == 0:
            myList.append(i)

    return myList

使用这段代码我想知道如何将例12中的因子打印出来[[6,2],[3,4]]这样的dosnt必须按照相同的顺序谢谢。

4 个答案:

答案 0 :(得分:1)

这应该适合你:

import math

def problem(n):
    myList = []
    for i in range(2, int(math.sqrt(n) + 1)):
        if n % i == 0:
            myList.append([i, int(n/i)])

    return myList

要获得系数对,如果n是一个因素,则ii除以i

示例:

print(problem(12)) #output: [[2, 6], [3, 4]]

答案 1 :(得分:1)

你几乎是对的。使用范围你没有拿数字。只需添加n + 1而不是n。这应该工作。你也不是在列表中选择divident。我也补充说。

def problem(n):
    myList = []
    for i in range(2, n+1):
        if n % i == 0 and [int(n/i),i] not in myList:
            myList.append([i,int(n/i)])

    return myList

答案 2 :(得分:1)

另一种方式。使用range循环并检查是否is_integer

num = 12
set([tuple(sorted(j)) for j in [[i, int(num/i)] for i in range(2,num) if (num/i).is_integer()]]
)
#Output:
#{(2, 6), (3, 4)}

答案 3 :(得分:0)

为了只进行一次除法:

for i in range(2, int(math.sqrt(n) + 1)):
    d, m = divmod(n, i)
    if m == 0:
        myList.append([i, d])

您不会获得上限为sqrt(n)

的重复项