为什么我的质因数分解器不终止?

Why doesn't my prime factorizer terminate?

使用python。我的质因数分解器中的 'print' 步骤有效,但它永远不会 returns 1,并且也不会生成列表。我的程序在哪里卡住了?

from math import ceil, floor, sqrt
primeList = []
primeFactorList = []

def primeList(x):
    primeList = [2]
    for n in range(2,x):
        for p in primeList:
            if n%p == 0:
                break
            elif p == primeList[-1]:
                primeList.append(n)

    return(primeList)
# Generates list of prime numbers less than x

def primeFactorizer(x):
    primeFactorList = []
    while x != 1:
        for p in primeList(x):
            if x%p == 0:
                primeFactorList.append(p)
                x = x/p
                print(x)
                break

    return(primeFactorList)
# Generates list of (possibly duplicate) prime factors of x

print(primeFactorizer(36))

primeListreturns 素数等于但小于 x。 如果 primeFactorizer 中的 x 是质数,则 x%p 在 for 循环中永远不会为真,因此 x 永远不会改变。

忘记素数并测试每个数字的因式分解:

def factorize(number):
    factors = []
    for factor in range(2, number + 1):
        while number % factor == 0:
            factors.append(factor)
            number //= factor
            print(number)
        if number == 1:
            break
    return factors

print(factorize(36))