为什么我的质因数分解器不终止?
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))
primeList
returns 素数等于但小于 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))
使用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))
primeList
returns 素数等于但小于 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))