Python 3.x 如何修复';求一个数的素因子';用Python
我试图通过以下代码找到一个数字的素因子:Python 3.x 如何修复';求一个数的素因子';用Python,python-3.x,Python 3.x,我试图通过以下代码找到一个数字的素因子: def pf(n): f=[] while n != 1: for i in range(2, n+1): if n%i == 0: f.append(i) n //=i return f pf(8)的输出是[2,4],而不是我预期的[2,2,2]。 pf(16)的输出是[2,4,2],而不是[2,2,2,2]。 谁能帮我找出
def pf(n):
f=[]
while n != 1:
for i in range(2, n+1):
if n%i == 0:
f.append(i)
n //=i
return f
pf(8)的输出是[2,4],而不是我预期的[2,2,2]。
pf(16)的输出是[2,4,2],而不是[2,2,2,2]。
谁能帮我找出我的代码出了什么问题吗?如果你打破了循环,你会得到你想要的:
def pf(n):
f=[]
while n != 1:
for i in range(2, n+1):
if n%i == 0:
f.append(i)
n //=i
break
return f
为什么错了?
在第一个for循环中,8
is可以被2
除掉,因此n等于4
。当i等于4
时,4被加为素数因子
其他实施:
我更喜欢这种实现:)
此实现避免您重新计算已知不可分割范围内的数字
def pf(n):
f=[]
i = 2
while n != 1:
if n%i == 0:
f.append(i)
n //=i
else:
i += 1
return f