Python 生成有限序列的质因数函数之和

Python sum of prime factors function to produce finite sequence

In Python2.7 我想通过对结果重复素因数和 (sopfr) 函数直到达到素数来为给定整数生成有限序列。以下 sopfr(n) 的代码来自 OEIS A001414。

from sympy import factorint
def sopfr(n):
    return sum(p*e for p, e in factorint(n).items())

>>>sopfr(888)
46
>>>

我想更改此代码,以便它给出此结果

>>>sopfrs(888)
46 25 10 7
>>>

其中 46 = sopfr(888), 25 = sopfr(46)... 等等,直到它以质数终止,在本例中为 7。我已经阅读了一些内容并尝试了 whilefor 循环失败。实验,我肯定会很有趣。请原谅这个问题的新手性质,我们将不胜感激。

您可以使用如下示例:

from sympy import factorint

def sopfr(n):
    sub = []
    while True:
        a = sum(k*v for k,v in factorint(n).items())
        if a == n:
            break
        else:
            sub.append(a)
            n = a
    return sub
# Tests
a = sopfr(888)
print(a)
a = sopfr(65)
print(a)

输出:

[46, 25, 10, 7]
[18, 8, 6, 5]