Euler 3 (Python)

Este post fue migrado de un blog hecho con Wordpress. Si se ve mal, dejame un comentario y lo arreglo.

Enunciado 3

Los factores primos de 13195 son 5, 7, 13 y 29.

¿Cual es el mayor factor primo del número 600851475143?

Solución

La solución fue obtenida en el intérprete interactivo de Python 2.5.2:

>>> from math import sqrt

>>> the_number = 600851475143

>>> my_number = sqrt(the_number)

>>> my_number

775146.09922452678

>>> my_number = int(my_number)

>>> my_number

775146

>>> def esprimo(n):

...     for i in xrange(2,int(sqrt(n))+1):

...             if n % i == 0:

...                     return False

...     return True

...

>>> esprimo(8)

False

>>> esprimo(3)

True

>>> esprimo(6823)

True

>>> esprimo(100109)

True

>>> esprimo(100110)

False

>>> for i in xrange(1, my_number+1):

...      if the_number % i == 0 and esprimo(i):

...             print i

...

1

71

839

1471

6857

Python tips

  • xrange, en lugar de crear una lista entera de números como hace range devuelve un generador que va entregando números a medida que los necesitamos.
  • La clase int se instancia para obtener enteros. Si la llamamos con un float como parámetro, podemos usarla para forzar un entero.

Comentarios

Comments powered by Disqus