About Taringa!

Popular channels

Obtener números primos Python

Les traigo un script muy simple para obtener los números primos hasta cierto límite Python.

Simplemente guardan el script en un archivo llamado ejemplo.py y desde la consola de windows o linux, desde el directorio donde hayan guardado el archivo corren el comando "python ejemplo.py"
[color=#000000][code][/color]
#!/usr/bin/env python
# -*- coding: utf-8 -*-
def isprime(n):
    '''chequear si un entero es primo'''
    # chequear que la entrada sea un entero positivo
    n = abs(int(n))
    # 0 y 1 no son primos
    if n < 2:
        return False
    # 2 es el unico primo par
    if n == 2: 
        return True    
    # El resto de pares no son primos
    if not n & 1: 
        return False
    #El rango comienza en 3 y solo necesita subir hasta la raiz cuadrada de n 
    # para todos los impares
    for x in range(3, int(n**0.5)+1, 2):
        if n % x == 0:
            return False
    return True

#Declaramos la lista para guardar el resultado
primos = []
try:
limit = int(raw_input('Ingrese un número: '))
except ValueError:
print "Oops!  No es un número valido.."

#Corremos un  loop para guardar los resultados en primos[]
i = 1
if limit > 0:
while i <= limit:
check = isprime(i)
if check == True:
primos.append(i)
elif check == False:
pass
i = i+1

#Obtenemos el primos mas grande
mayor = primos[len(primos)-1]
print 'Se encontraron %d numeros primos' % (len(primos))
print 'El mas alto es %d y contiene %d digitos' %(mayor,len(str(mayor)))

print_all = raw_input('Imprimir resultados (s/n)')
if print_all == str('s'):
i = 1
for x in primos:
print i,'->',x
i=i+1
elif print_all == str('n'):
pass
else:
pass

[/code]
Los resultados son algo así:
[email protected]:/home/sms# python primos.py
Ingrese un número: 13
Se encontraron 5 numeros primos
El mas alto es 13 y contiene 2 digitos
Imprimir resultados (s/n)s
1 -> 2
2 -> 3
3 -> 5
4 -> 7
5 -> 11


Si quieren ejecutar el código bajen el único archivo del siguiente repositorio: https://github.com/codigoTaringa/primos ya que Taringa modifica las identaciones al postear el código.
0No comments yet