On Wed, Dec 26, 2012 at 12:50 PM, monoBOT <monobot.s...@gmail.com> wrote:
> def prim(n):
>     if n == 1:
>         return False
>     if n == 2 or n == 3:
#     if n in (2,3)
# (más corto, y más fácil de expandir).
>         return n
>     for m in xrange(2, int(n ** 0.5) + 1):
>         if n % m:
>             if m == int(n ** 0.5):
# Aquí estás calculando la raíz cuadrada del mismo número en cada
iteración, lo que puede ser lento. Puedes definir sqrn = int(n**0.5)
al principio. Si vas a calcular muchas raíces cuadradas, es mejor usar
la función math.sqrt, pero para esto es mejor dejarlo así.
>                 return n
>         else:
>             return False
>
>
> def fprimos(n1, n2):
>     l = []
>     for num in range(n1, n2 + 1):
# Si estás usando Python 2.x, es mejor usar un xrange, ya que no estás
usando la lista. En Python 3.x, el range es como el xrange de 2.
# La diferencia (Py2.x) es que range genera y guarda en memoria una
lista con todos los elementos, mientras que xrange te va devolviendo
el siguiente número, sin almacenarlos todos, ya que no los necesitas.
>         if prim(num):
>             l.append(num)
>     return l
_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a