[Python] numeri primi
ciao a tutti ;) non me ne intendo molto di programmazione, sono alle prime armi, ma secondo voi è buono un codice che riesce in 5 secondi a trovare tutti i numeri primi da 1 a 100? (ho un intel i3 da 3 ghz) P.S.: il codice l'ho elaborato io studiando un po da solo i numeri primi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
[Python] Invitation to connect on LinkedIn
LinkedIn Francesco Boccacci requested to add you as a connection on LinkedIn: -- Andrea, I'd like to add you to my professional network on LinkedIn. - Francesco Accept invitation from Francesco Boccacci http://www.linkedin.com/e/fcxh4w-gqv1goux-2s/Go-0BmLZKcslqzJnWT-3OipapwJ-H5Mjvna/blk/I3004681043_2/1BpC5vrmRLoRZcjkkZt5YCpnlOt3RApnhMpmdzgmhxrSNBszYOnPcQc34UdzgMc3d9bPxmkzB4dORvbPsQe30Mej8PdPcLrCBxbOYWrSlI/EML_comm_afe/ View invitation from Francesco Boccacci http://www.linkedin.com/e/fcxh4w-gqv1goux-2s/Go-0BmLZKcslqzJnWT-3OipapwJ-H5Mjvna/blk/I3004681043_2/39vcPgMcjwSd30McQALqnpPbOYWrSlI/svi/ -- DID YOU KNOW LinkedIn can help you find the right service providers using recommendations from your trusted network? Using LinkedIn Services, you can take the risky guesswork out of selecting service providers by reading the recommendations of credible, trustworthy members of your network. http://www.linkedin.com/e/fcxh4w-gqv1goux-2s/svp/inv-25/ -- (c) 2011, LinkedIn Corporation___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] numeri primi
2011/8/2 matteo > non me ne intendo molto di programmazione, sono alle prime armi, ma secondo > voi è buono un codice che riesce in 5 secondi a trovare tutti i numeri primi > da 1 a 100? (ho un intel i3 da 3 ghz) > in assoluto? dipende :-) marco@aigor:~$ time primes 1 100 > /dev/null real0m0.018s user0m0.016s sys0m0.000s > P.S.: il codice l'ho elaborato io studiando un po da solo i numeri primi > bene! se hai voglia di pubblicarlo possiamo commentarlo assieme ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] numeri primi
2011/8/2 matteo > P.S.: il codice l'ho elaborato io studiando un po da solo i numeri primi > forse può interessarti http://stacktrace.it/2008/01/progetto-eulero-problema-3/ ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] numeri primi
2011/8/2 Marco Mariani > 2011/8/2 matteo > > >> non me ne intendo molto di programmazione, sono alle prime armi, ma >> secondo voi è buono un codice che riesce in 5 secondi a trovare tutti i >> numeri primi da 1 a 100? (ho un intel i3 da 3 ghz) >> > > in assoluto? dipende :-) > > marco@aigor:~$ time primes 1 100 > /dev/null > > real0m0.018s > user0m0.016s > sys0m0.000s > Usando un algoritmo scritto (in Python) da un amico: >>> timeit.timeit("import km;km.sieve(100)", number=1) 0.12970614433288574 >>> timeit.timeit("import km;km.sieve(1000)", number=1) 1.3863430023193359 >>> timeit.timeit("import km;km.sieve(1)", number=1) 14.972478151321411 Bravo il mio amico, eh? :-) Ciao. Marco. -- http://beri.it/ - Un blog http://beri.it/i-miei-libri/ - Qualche libro ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] numeri primi
Il 02/08/2011 17:44, Marco Mariani ha scritto: 2011/8/2 matteo mailto:matteo.we...@gmail.com>> non me ne intendo molto di programmazione, sono alle prime armi, ma secondo voi è buono un codice che riesce in 5 secondi a trovare tutti i numeri primi da 1 a 100? (ho un intel i3 da 3 ghz) in assoluto? dipende :-) marco@aigor:~$ time primes 1 100 > /dev/null real0m0.018s user0m0.016s sys0m0.000s P.S.: il codice l'ho elaborato io studiando un po da solo i numeri primi bene! se hai voglia di pubblicarlo possiamo commentarlo assieme ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python import math def primi(N): """ Print first N prime numbers """ primes=[2] x=3 while xecco ;) è sempliciotto, ma gia ho pensato a qualcosa per migliorarlo, voi che ne pensate? ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] numeri primi
senza entrare in merito ai tempi, perche come qualcuno ha detto dipende da quello che fai con i numeri, di solito la print su standard output impiega più tempo del trovare i numeri direi che puoi ottimizzare questa linea 2011/8/2 matteo > for divi in primes[:int(math.sqrt(x))]: ad esempio per il 101 devi provare per i numeri primi fino a 10 quindi 2, 3, 5, 7 ossia i primi 4 non i primi 10 ciao S ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
[Python] watsup, pywinauto, winGuiAuto e simili
qualcuno conosce altri librerie per automatizzare le GUI sono windows oltre quelli citati nell'oggetto? grazie. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] numeri primi
Il 02/08/2011 18:00, Simone Federici ha scritto: senza entrare in merito ai tempi, perche come qualcuno ha detto dipende da quello che fai con i numeri, di solito la print su standard output impiega più tempo del trovare i numeri direi che puoi ottimizzare questa linea 2011/8/2 matteo mailto:matteo.we...@gmail.com>> for divi in primes[:int(math.sqrt(x))]: ad esempio per il 101 devi provare per i numeri primi fino a 10 quindi 2, 3, 5, 7 ossia i primi 4 non i primi 10 ciao S ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python grazie federico per il tuo consiglio anche se gia avevo pensato la stessa cosa ;) ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] numeri primi
Marco Beri wrote: Bravo il mio amico, eh? :-) Chi e'? Lo conosco... A me piace barare: % time python erat_matrix.py 1000 (array([ 2, 3, 5, ..., 971, 973, 991]),) python erat_matrix.py 1000 0.61s user 0.12s system 38% cpu 1.930 total -- . ..: -enrico- ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] numeri primi
Marco Beri writes: > Usando un algoritmo scritto (in Python) da un amico: > timeit.timeit("import km;km.sieve(100)", number=1) > 0.12970614433288574 timeit.timeit("import km;km.sieve(1000)", number=1) > 1.3863430023193359 timeit.timeit("import km;km.sieve(1)", number=1) > 14.972478151321411 > > Bravo il mio amico, eh? :-) Si può fare di meglio: In [25]: timeit.timeit('num.primes(100)', 'import num', number=1) Out[25]: 1.2874603271484375e-05 In [26]: timeit.timeit('num.primes(10)', 'import num', number=1) Out[26]: 1.3113021850585938e-05 In [27]: timeit.timeit('num.primes(1)', 'import num', number=1) Out[27]: 1.1920928955078125e-05 In [28]: timeit.timeit('num.primes(1000)', 'import num', number=1) Out[28]: 1.4066696166992188e-05 tutto scritto in python e perfettamente funzionante :) . . . . In [29]: num.primes(100) Out[29]: In [31]: timeit.timeit('list(num.primes(100))', 'import num', number=1) Out[31]: 1.0322129726409912 In [32]: timeit.timeit('list(num.primes(1000))', 'import num', number=1) Out[32]: 4.1961090564727783 In [33]: timeit.timeit('list(num.primes(1))', 'import num', number=1) Out[33]: 35.926841974258423 ciao, Mauro ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] numeri primi
Il 02/08/2011 21:15, Mauro Casini ha scritto: Marco Beri writes: Usando un algoritmo scritto (in Python) da un amico: timeit.timeit("import km;km.sieve(100)", number=1) 0.12970614433288574 timeit.timeit("import km;km.sieve(1000)", number=1) 1.3863430023193359 timeit.timeit("import km;km.sieve(1)", number=1) 14.972478151321411 Bravo il mio amico, eh? :-) Si può fare di meglio: In [25]: timeit.timeit('num.primes(100)', 'import num', number=1) Out[25]: 1.2874603271484375e-05 In [26]: timeit.timeit('num.primes(10)', 'import num', number=1) Out[26]: 1.3113021850585938e-05 In [27]: timeit.timeit('num.primes(1)', 'import num', number=1) Out[27]: 1.1920928955078125e-05 In [28]: timeit.timeit('num.primes(1000)', 'import num', number=1) Out[28]: 1.4066696166992188e-05 come hai fatto :O , io non riesco neanche a migliorare i miei 3,8 secondi per 100 :/ ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] numeri primi
2011/8/2 matteo : > Il 02/08/2011 21:15, Mauro Casini ha scritto: >> Marco Beri writes: >>> Usando un algoritmo scritto (in Python) da un amico: >> timeit.timeit("import km;km.sieve(100)", number=1) >>> 0.12970614433288574 [...] >> Si può fare di meglio: >> In [25]: timeit.timeit('num.primes(100)', 'import num', number=1) >> Out[25]: 1.2874603271484375e-05 [...] > come hai fatto :O , io non riesco neanche a migliorare i miei 3,8 secondi > per 100 :/ Ha barato ;) Rileggi bene il suo mail. © -- Carlo Miron More Cheater Than Rik0 Solution Architect™ ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] numeri primi
Carlo Miron wrote: Ha barato;) Rileggi bene il suo mail. Beh, in confronto io *non* ho barato... ;) -- . ..: -enrico- ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] numeri primi
2011/8/2 Mauro Casini > > timeit.timeit("import km;km.sieve(100)", number=1) > > 0.12970614433288574 > timeit.timeit("import km;km.sieve(1000)", number=1) > > 1.3863430023193359 > timeit.timeit("import km;km.sieve(1)", number=1) > > 14.972478151321411 > > > In [29]: num.primes(100) > Out[29]: > > In [31]: timeit.timeit('list(num.primes(100))', 'import num', number=1) > Out[31]: 1.0322129726409912 > > In [32]: timeit.timeit('list(num.primes(1000))', 'import num', > number=1) > Out[32]: 4.1961090564727783 > > In [33]: timeit.timeit('list(num.primes(1))', 'import num', > number=1) > Out[33]: 35.926841974258423 > Beh, visto che le funzioni del mio amico (si chiama Fabrizio Romano per la cronaca) ritornano delle liste di primi, direi che ti battono 2.5 a 1 :-) Scherzi a parte, ora gli chiedo se posso postarvi il codice della sua funzione (è un crivello bello tosto). Ciao. Marco. -- http://beri.it/ - Un blog http://beri.it/i-miei-libri/ - Qualche libro ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] numeri primi
Il giorno 02 agosto 2011 17:49, matteo ha scritto: > import math > def primi(N): > > """ Print first N prime numbers """ > > primes=[2] > x=3 > while xvalid=True >for divi in primes[:int(math.sqrt(x))]: > if x%divi==0: > valid=False > break >if valid: > primes.append(x) >x=x+2 > return primes > > ecco ;) è sempliciotto, ma gia ho pensato a qualcosa per migliorarlo, voi > che ne pensate? > > ___ > Python mailing list > Python@lists.python.it > http://lists.python.it/mailman/listinfo/python > > Qualche idea: - non occorre mettere il 2 fin da subito nella lista dei primi dato che poi, incrementando di 2 ottieni sempre numeri dispari. - l'istruzione: primes[:int(math.sqrt(x))] costruisce, ogni volta che viene chiamata, una nuova lista. Dovresti riuscire a far fare il ciclo in questo modo: for divi in primes: ... - sostituire l'operazione % con la funzione divmod può permetterti di evitare la radice quadrata. - non dovrebbe neppure essere un grosso problema evitare l'uso della variabile isvalid. Io proverei i tempi con questi cambiamenti, per avere ulteriori miglioramenti bisogna, penso, impostare l'algoritmo in modo diverso utilizzando le istruzioni di Python di trattamento delle liste. Prova e facci sapere dei miglioramenti nei tempi -- Daniele www.fugamatematica.blogspot.com giusto! nel verso forse è perché non guardiamo le cose Quando non ci capiamo, ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python