如何使函数在每个子列表中工作



我需要创建一个函数,将n的素数作为列表返回,然后打印该列表的素数,形成一个子列表。例如,如果n=10,输出应该是这个

输出:

[[2,[2]],[3,[3]],[4,[2,2]],[5,[5]],[6,[2,3]],[7,[7]],[8,[2,2,2]],[9,[3,3]],[10,[2,5]]]

现在我有这个功能:

L = []
P = []
S = []
for x in range(2,n+1,1):
S = []
S.append(x)
S.append([])
L.append(S)
r = S[0]
for x in range(2,r+1):
while r % x == 0:
P.append(x)
r = r//x
S[1] = P
print(S[0])

然而,它只打印最后一个子列表中项目的素数,我的问题是如何使我的函数在列表的每个子列表上工作,而不仅仅是在最后一个子列表上。

您必须对所有子列表执行最后一步

n = 10
L = []
for x in range(2,n+1,1):
P = []
S = []
S.append(x)
S.append([])
L.append(S)
r = S[0]
for x in range(2,r+1):
while r % x == 0:
P.append(x)
r = r//x
S[1] = P
print(L)

输出

[[2, [2]], [3, [3]], [4, [2, 2]], [5, [5]], [6, [2, 3]], [7, [7]], [8, [2, 2, 2]], [9, [3, 3]], [10, [2, 5]]]