[Python] crivello Atkin?
Pietro Battiston
toobaz a email.it
Mar 16 Mar 2010 10:11:40 CET
Il giorno lun, 15/03/2010 alle 23.59 +0100, Nicola Ferrari ha scritto:
> Ciao a tutti..
> stavo "giocando" con ProjectEuler.
> Il problema 10
> (http://projecteuler.net/index.php?section=problems&id=10) mi sta
> dando un po' di problemi..
> i tempi di risoluzione superano i 2 minuti, e io volevo rispettare le
> specifiche del sito, che prevedono che i tempi di risoluzione
> inferiori al minuto..
>
> Ho provato a riutilizzate il generatore infinito di numeri primi
> (http://stacktrace.it/2008/01/progetto-eulero-problema-3/) ma i tempi
> restano cmq alti..
>
> Qualcuno sa illustrarmi qualche metodo per velocizzare il tutto?
> Ho letto su wikipedia che c'è il crivello di Atkin che migliora le
> prestazioni di quello di Eratostene...
> Qualcuno ferrato in materia può spiegarmi Atkin o darmi delle
> documentazioni che lo spiegano?
>
> La spiegazione fornita da wikipedia non la capisco..
Neanch'io, ma forse c'è qualcos'altro che non capisco: i seguenti
comandi
>>> l = [True] * 2000000
>>> for i in range(2, 2000):
... if l[i]:
... for j in range(2, 2000000/i):
... l[i*j] = False
>>> print sum([i for i in range(2, 2000000) if l[i]])
richiedono meno di 10 secondi sul mio computer. C'è qualcosa che mi
sfugge?
ciao
Pietro
Maggiori informazioni sulla lista
Python