我正在编写一些代码,旨在找到数字的质因数分解。主要函数递增遍历数字;我这样做是因为我想使用代码进行时间实验。我不介意它不是超级高效的,对我来说,项目的一部分将是使它更加高效。它还没有完全完成(例如,它不会简化质因数分解)。我已经测试过除主函数以外的所有函数,并且它们都有效,所以没有问题。
我的代码是:
我的代码是:
import math
import time
primfac=[]
def primes(n):
sieve = [True] * n
for i in xrange(3,int(n**0.5)+1,2):
if sieve[i]:
sieve[i*i::2*i]=[False]*((n-i*i-1)/(2*i)+1)
return [2] + [i for i in xrange(3,n,2) if sieve[i]]
def factfind(lsp,n): #finds factors of n among primes
for i in lsp:
if n%i==0:
primfac.append(i)
else:
i+=1
def primfacfind(n1,n2):
while n1 < n2:
n = n1
time_start = time.clock()
factfind(primes(n),n)
print primfac
time_elapsed = time.clock() - time_start
print "time:", time_elapsed
primfac.clear()
n1+=1
print primfacfind(6,15)
运行它会输出:
[2, 3]
time: 7.5e-05
Traceback (most recent call last):
File "python", line 43, in <module>
File "python", line 39, in primfacfind
AttributeError: 'list' object has no attribute 'clear'
我不太确定问题出在哪里。它能正确给出质因数分解的结果并打印时间,但似乎无法清空列表。注释掉primfac.clear()
这行代码后就可以正常工作。
如果有任何帮助需要,请告诉我。谢谢!
clear
方法是在 Python 3 中添加的。OP 可能正在使用 Python 2。 - Moses Koledoyedel primfac[:]
,我会接受... - Auden Young