[pyar] Numeros primos

Facundo Batista facundobatista en gmail.com
Vie Nov 25 08:39:56 ART 2011


2011/11/24 Pablo M. Mana <pablo.m.mana en gmail.com>:
> El otro dia en la CDC/SoL Fisa comento que los compresores son un
> herramienta muy poderosa en algunos casos.

Es verdad.


> def primos (inicio = 3, fin = 100 ):
> #""" Halla numeros primos por encima de 7 """
>    im = [ ( 2 * n + 1 ) for n in range (inicio, fin) ]
>    l1 = [ o for o in impares if (o % 5 != 0 ) ]
>    l2 = [ m for m in l1 if ( ( pow( m, 0.5) ) !=  int( pow( m, 0.5)))]
>    p1 = [ n for n in l2 if (l for l in range(2, int( pow( m, 0.5)))
> if n%l != 0 )]

Uh.

Eso es *complicado*.

Dejo, sólo por comparación, un código que acabo de escribir (en base a
una idea que me dio la Criba de Eratóstenes que mencionó Adrián en
otro mail:

def calcula_primos():
    primos = [2]
    yield 2
    n = 1
    while True:
        n += 2
        if all(n % p for p in primos):
            primos.append(n)
            yield n

Son más lineas, es quizás menos puro... pero creo que es más fácil de
entender, lo cual es un feature importante de un código, :)

Habría que ver cual es más rápido, que también es un feature
importante a la hora de calcular números primos :p

-- 
.    Facundo

Blog: http://www.taniquetil.com.ar/plog/
PyAr: http://www.python.org/ar/



More information about the pyar mailing list