Python 2.7 Python素数因子和函数生成有限序列
在Python2.7中,我想通过对结果重复素数因子和(sopfr)函数,直到它达到一个素数,为给定整数生成有限序列。以下sopfr(n)代码来自OEIS A001414Python 2.7 Python素数因子和函数生成有限序列,python-2.7,math,recursion,primes,sequences,Python 2.7,Math,Recursion,Primes,Sequences,在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 >>> 我想修改这个代码,这样它会给出这个结果 >>&
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。我读了一些关于
while
和的文章,并尝试了循环中的运气。我相信这会让人开怀大笑。请原谅这个问题的新手性质,任何帮助都将不胜感激 您可以使用如下示例:
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]
您可以使用如下示例:
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]
感觉sopfrs可以是这样的:如果n是prime(sopfr(n)),则执行一块打印sopfr(n)并调用sopfrs(sopfr(n))感觉sopfrs可以是这样的:如果n是prime(sopfr(n)),则执行一块打印sopfr(n)并调用sopfrs(sopfr(n))