Why is my code faster with append() in a loop than with a large list?

MRAB python at mrabarnett.plus.com
Mon Jul 6 19:20:59 CEST 2009


Dave Angel wrote:
> MRAB wrote:
>> <div class="moz-text-flowed" style="font-family: -moz-fixed">Dave 
>> Angel wrote:
>> [snip]
>>> It would probably save some time to not bother storing the zeroes in 
>>> the list at all.  And it should help if you were to step through a 
>>> list of primes, rather than trying every possible int.  Or at least 
>>> constrain yourself to odd numbers (after the initial case of 2).
>>>
>> Or stop looking for more factors when you've passed the square root of
>> num. I don't know what effect there'll be on the time if you recalculate
>> the square root when num changes (expensive calculation vs smaller
>> search space).
>>
>> </div>
>>
> But if I remember the code, it stopped when the quotient is one, which 
> is usually sooner than the square root.  And no need to precalculate the 
> square root.
> 
If the number is a large prime then the code will try all the numbers up
to that, eg if num == 1000003 then it'll try 2..1000003 even though it
could've given up after 1000.



More information about the Python-list mailing list