[Python-ideas] Is this PEP-able? for X in ListY while conditionZ:

Greg Ewing greg.ewing at canterbury.ac.nz
Wed Jul 3 00:35:13 CEST 2013


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.)

-- 
Greg


More information about the Python-ideas mailing list