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必须按照相同的顺序谢谢。
答案 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
是一个因素,则i
将i
除以i
。} p>
示例:
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)