On Tue, Jul 2, 2013 at 3:35 PM, Greg Ewing <greg.ewing@canterbury.ac.nz> wrote:
Oscar Benjamin wrote:
def primes():
    primes_seen = []
    for n in count(2):
        if all(n % p for p in primes_seen):
            yield n
            primes_seen.append(n)

This algorithm is actually even poorer as it doesn't stop at sqrt(n).

Nor should it! When you're only dividing by primes, you
can't stop at sqrt(n), you have to divide by *all* the
primes less than n. Otherise you could miss a prime
factor greater than sqrt(n) whose cofactor is not prime.

(Not relevant to the original disussion, I know, but
my inner mathematician couldn't restrain himself.)

That would imply that the cofactor has no prime factors (or else you would have hit them), which would mean it must be prime itself (and therefore you hit the cofactor earilier).
 


--
Greg

_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
http://mail.python.org/mailman/listinfo/python-ideas