你只需要从1迭代到n**0.5+1,你的因子就是所有的i,而n/i就是你一路上得到的。

例如:10的系数:

我们只需要从1到4迭代

i=1=>;10%1==0,所以因子:i=1,10/i=10
i=2=>;10%2==0,所以因子:i=2,10/i=5
i=3=>;10%3!=0,无系数

我们不需要再进一步了,答案是1,2,5,10。def problem(n):

myList = []
for i in xrange(1, int(n ** 0.5 + 1)):
if n % i == 0:
if (i != n/i):
myList.append(i)
myList.append(n / i)
else:
myList.append(i)
return myList

结果:>>> problem(10)

[1, 10, 2, 5]
>>> problem(12)
[1, 12, 2, 6, 3, 4]
>>> problem(77)
[1, 77, 7, 11]
>>> problem(4)
[1, 4, 2]
>>> problem(64)
[1, 64, 2, 32, 4, 16, 8]
>>> len(problem(10 ** 12))
169