[Python] numeri primi

2011-08-02 Per discussione matteo

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

2011-08-02 Per discussione Francesco Boccacci via 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-08-02 Per discussione 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



> 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-08-02 Per discussione Marco De Paoli
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-08-02 Per discussione Marco Beri
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

2011-08-02 Per discussione matteo

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

2011-08-02 Per discussione Simone Federici
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

2011-08-02 Per discussione Balan Victor
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

2011-08-02 Per discussione matteo

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

2011-08-02 Per discussione Enrico Franchi

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

2011-08-02 Per discussione Mauro Casini
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

2011-08-02 Per discussione 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

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-08-02 Per discussione Carlo Miron
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

2011-08-02 Per discussione Enrico Franchi

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-08-02 Per discussione Marco Beri
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

2011-08-02 Per discussione Daniele Zambelli
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