[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