Python的素因子和函数产生有限序列

时间:2017-06-13 01:58:45

标签: python-2.7 math recursion primes sequences

在Python2.7中,我想通过在结果(s)上​​重复素因子(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循环没有运气。实验,我肯定会笑一笑。原谅这个问题的新手性质,任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

你可以使用类似这样的例子:

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]