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必须在相同的顺序谢谢。蟒蛇放入列表
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必须在相同的顺序谢谢。蟒蛇放入列表
这应该为你工作:
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
的对将。
例如:
print(problem(12)) #output: [[2, 6], [3, 4]]
你能解释一下哪些部分添加了吗?谢谢 –
@joey'int(n/i)'''''''''''''''将''划分出来,然后把答案变成一个整数。 – gommb
那么我的名单中没有的部分呢,那么做什么呢,也不是一个痛苦,还有另一种方式来做到这一点。也可以在没有图书馆的情况下做到这一点 –
你几乎是正确的。使用范围,你没有采取数字。只需添加n + 1而不是n。这应该工作。此外,你并没有在名单上争夺这位贱民。我也补充说。
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
另一种方式。使用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)}
为了做到分工只有一次:
for i in range(2, int(math.sqrt(n) + 1)):
d, m = divmod(n, i)
if m == 0:
myList.append([i, d])
你不会得到重复使用上限sqrt(n)
更新后按照https://开头stackoverflow.com/help/someone-answers –