Ho 17 anni per iniziare a programmare con l'aiuto del linguaggio di programmazione Python.Qualcuno può forse insegnarmi come ottimizzare ulteriormente questo script "stampa fino all'ennesimo numero primo"?
Ho cercato di ottimizzare questo algoritmo, forse eliminando uno dei loop, o con un test migliore per verificare i numeri primi.
Tentando di calcolare e visualizzare 100000 numeri primi, lo script fa una pausa di circa 6 secondi mentre popola la lista con i primi prima che l'elenco di primi venga restituito alla console come output.
ho avuto modo di sperimentare con l'utilizzo di
print odd,
stampare semplicemente ogni numero primo scoperto, che è più veloce per gli ingressi più piccoli, come n = 1000, ma per n = 1000000 lista stessa stamperà molto più veloce (sia nella shell python e nella console).
Forse l'intero codice/algoritmo dovrebbe essere rinnovato, ma lo script dovrebbe rimanere essenzialmente lo stesso: l'utente digita il numero di numeri primi da stampare (n) e lo script restituisce tutti i numeri primi fino all'ennesimo primo numero.
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()
potrei desiderare di riscrivere l'intero script per utilizzare un setaccio come il crivello di Atkin: http://en.wikipedia.org/wiki/Sieve_of_Atkin
Tuttavia, io sono semplicemente un principiante in Python (o anche a programmazione: ho iniziato a scrivere solo il 2 codice settimane fa) e sarebbe una vera sfida per me capire come codificare un algoritmo di Sieve of Atkin in Python.
auguro un hacker google fuori ci sarebbe mano hold me attraverso cose come questa :(
Questa è una grande domanda, ma penso che sia più adatto a codereview.stackexchange.com. Stack Overflow è principalmente per domande di programmazione specifiche che hanno risposte definitive. – templatetypedef