我这样做的唯一问题是程序打印了一个列表
表示n = 11,当我只想[11]时,最终结果将显示为[2,2,3]。大多数测试也是如此,它将具有我需要的数字,但也有其他数字。
Base = 2
divisors = [ ]
while n > 1:
if n % Base == 0:
divisors.append(Base)
n = (n / Base)
else:
Base += 1 + Base % 2
return (divisors)
最佳答案
您只需要确保在if
语句中之前未使用过除数:
def prime_divisors(n):
ns = 2
divisors = [ ]
while n > 1:
if n % ns == 0 and n not in divisors:
divisors.append(ns)
n = (n / ns)
else:
ns += 1 + ns % 2 # 2 -> 3, odd -> odd + 2
return (divisors)
关于python - 从数字获得质数除数的最终 list 打印问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35834411/