Tengo 17 años y comienzo a programar con la ayuda del lenguaje de programación Python.¿Alguien me puede enseñar cómo optimizar aún más esta secuencia de comandos 'imprima hasta el enésimo número primo'?
He estado tratando de optimizar este algoritmo, quizás eliminando uno de los bucles, o con una prueba mejor para verificar los números primos.
Intentando calcular y mostrar 100000 números primos tiene la secuencia de comandos haciendo una pausa de unos 6 segundos, ya que rellena la lista con números primos antes de que la lista de primos se devuelva a la consola como salida.
He estado experimentando con el uso de
print odd,
simplemente imprimir cada número primo encontrado, que es más rápido para las entradas más pequeñas como n = 1000, pero para n = 1000000 imprime la lista en sí mucho más rápido (tanto en el shell de python y en la consola).
Quizás todo el código/algoritmo se debe renovar, pero el script debe seguir siendo esencialmente el mismo: el usuario ingresa el número de números primos a imprimir (n) y el script devuelve todos los números primos hasta el enésimo primo número.
from time import time
odd = 1
primes = [2]
n = input("Number of prime numbers to print: ")
clock = time()
def isPrime(number):
global primes
for i in primes:
if i*i > number:
return True
if number%i is 0:
return False
while len(primes) < n:
odd += 2
if isPrime(odd):
primes += [odd]
print primes
clock -= time()
print "\n", -clock
raw_input()
Me posible que desee volver a escribir toda la secuencia de comandos para utilizar un tamiz como el tamiz de Atkin: http://en.wikipedia.org/wiki/Sieve_of_Atkin
Sin embargo, yo soy simplemente un principiante en Python (o incluso en la programación: Empecé a escribir sólo el 2 Código semanas atrás) y sería todo un desafío para mí descubrir cómo codificar un algoritmo de Sieve of Atkin en Python.
deseo un hacker google a cabo no habría asimiento de la mano conmigo a través de este tipo de cosas :(
Esta es una gran pregunta, pero creo que es más adecuada en codereview.stackexchange.com. Stack Overflow es principalmente para preguntas de programación específicas que tienen respuestas definitivas. – templatetypedef