[Python] numeri primi

Daniele Zambelli daniele.zambelli a gmail.com
Sab 27 Ago 2011 17:27:53 CEST


Scusate, ho sbagliato a ricostruire l'indentazione:

def sieveOfEratostenes2(n):

    if n <= 2:

        return []

    sieve = list(range(3, n, 2))

    top = len(sieve)

    for si in sieve:

        if si:

            bottom = (si*si - 3) // 2

            if bottom >= top:

                break

            sieve[bottom::si] = [None] * -((bottom - top) // si)

    return [2] + list(filter(None, sieve))


def sieveOfEratostenes3(n):

    if n <= 2:

        return []

    sieve = numpy.arange(3, n, 2, dtype = int)

    top = len(sieve)

    for si in sieve:

        if si:

            bottom = (si*si - 3) // 2

            if bottom >= top:

                break

            sieve[bottom::si] = 0

    return [2] + list(filter(None, sieve))


Ciao

-- 

Daniele

www.fugamatematica.blogspot.com

    giusto!
    nel verso
    forse è perché non guardiamo le cose
    Quando non ci capiamo,
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20110827/26769ac7/attachment.html>


Maggiori informazioni sulla lista Python