【发布时间】:2016-11-19 13:48:21
【问题描述】:
我正在尝试查找 Python 中提供的数字的所有可能分解。
例如:1)给定 n=12, 输出将是,f(n)=[[2,2,3],[4,3],[6,2],[12]]
2) 给定 n=24, 输出将是,f(n)=[2,2,2,3],[2,2,6],[2,12],[4,6],[8,3],[ 24]]
这是我的代码:
def p(a):
k=1
m=1
n=[]
for i in range (len(a)):
for j in range(0,i+1):
k*=a[j]
for l in range(i+1,len(a)):
m*=a[l]
n+=[[k,m],]
k=1
m=1
return n
def f(n):
primfac = []
d = 2
while d*d <= n:
while (n % d) == 0:
primfac.append(d)
n //= d
d += 1
if n > 1:
primfac.append(n)
return p(primfac)
但我的代码返回以下值:
1) 对于 n=12,输出为 ,
[[2, 10], [4, 5], [20, 1]]
2)1) 对于 n=24,输出为 ,
[[2, 12], [4, 6], [8, 3], [24, 1]]
我该怎么做才能获得相关结果?
【问题讨论】:
标签: algorithm python-2.7