Will McGugan wrote: > > #!/usr/bin/python -OO > > import math > > import sys > > import psyco > > > > psyco.full() > > > > def primes(): > > primes=[3] > > for x in xrange(5,10000000,2): > > maxfact = int(math.sqrt(x)) > > flag=True > > for y in primes: > > if y > maxfact: > > break > > if x%y == 0: > > flag=False > > break > > if flag == True: > > primes.append(x) > > primes() > > > > Some trivial optimizations. Give this a whirl. > > def primes(): > sqrt=math.sqrt > primes=[3] > for x in xrange(5,10000000,2): > maxfact = int(sqrt(x)) > for y in primes: > if y > maxfact: > primes.append(x) > break > if not x%y: > break > return primes
You can also save an attribute lookup for append; just add append = primes.append outside of the loop and replace primes.append(x) with append(x) That should cut down a few fractions of second. George -- http://mail.python.org/mailman/listinfo/python-list