[prev in list] [next in list] [prev in thread] [next in thread] 

List:       python-edu-sig
Subject:    [Edu-sig] Re: [Tutor] what? (late nite entertainment) (*)
From:       urnerk () qwest ! net (Kirby Urner)
Date:       2004-01-29 3:50:49
Message-ID: E1Am7ss-0004gG-HQ () mail ! python ! org
[Download RAW message or body]

> def primes(n):
>     sieve, zeros = range(n), [0]*n
>     sieve[:2]= 0,0
>     i = 1
>     while i*i < n:
>         if sieve[i]: sieve[i*i:n:i]=zeros[i*i:n:i]
>         i += 1
>     return [p for p in sieve if p]
> 
> Regards,
> Gregor

Very nice.

Here's a slight variation:

def primes(n):
    sieve = [1]*n
    sieve[:2]= 0,0
    i = 1
    while i*i < n:
        if sieve[i]:  sieve[i*i:n:i] = len(sieve[i*i:n:i]) * [0]
        i += 1
    return [p for p in range(n) if sieve[p]]

Kirby



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic