我对Python比较陌生。现在,我知道有很多更好的程序用于素数分解,但我尝试编写代码而没有任何帮助并且卡住了。这是代码:
def is_prime(n):
i =2
while i<n:
if n%i==0:
return False
i+=1
return True
def prime_factor(n):
b = n
factor=[]
i = 2
while i<b and is_prime(i):
while n%i ==0:
factor.append(i)
n/=i
continue
i+=1
return factor
print (prime_factor(28))
代码适用于某些数字(27,24,12,18等),但是28代表失败。我得到值为[2,2]
的值为28.故障在哪里?
答案 0 :(得分:0)
while
条件中的问题:
while i<b :
while is_prime(i) and n%i ==0:
factor.append(i)
n/=i
continue
i+=1