我这样做的唯一问题是程序打印了一个列表
表示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/

10-12 18:25