Так что я делаю проблему проекта Эйлера, пытаясь включить Сито Эратосфена, чтобы найти самый большой первичный коэффициент числа, однако, когда я пытаюсь заполнить свою начальную хэш-таблицу, он замедляет сканирование и съедает концерты на сумму ОЗУ и берет на себя мой процессор. Может ли кто-нибудь объяснить, почему? Я понимаю, что сам код, вероятно, является подпарамПочему Python замедляет сканирование в этом коде?
allNums = {}
maxNum=600851475143
maxFactor=0
#fill dictionary, slows to a crawl here
for x in xrange(2,maxNum+1):
allNums[x]=True
#sieve of Erastosthenes
for x in xrange(2,len(allNums)):
y=x
if allNums[x]:
y **= 2
while y<=maxNum:
if allNums[y]:
allNums.pop(y)
y+=x
#largest prime factor
for x in allNums:
if maxNum%x==0 and x>maxFactor:
maxFactor=x
print x
второй цикл имеет петлю внутри, поэтому он не может быть O (N) и, следовательно, сценарий не должен быть O (3N) –
Вы серьезно !? –
То есть ... очень большое число. Я понимаю, почему это занимает много времени. –