Project Euler: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
tradotto anche l'esercizio di esempio |
Nessun oggetto della modifica |
||
(37 versioni intermedie di 31 utenti non mostrate) | |||
Riga 1:
{{O|internet|novembre 2012}}
{{Sito web
| nome = Project Euler
| commerciale = No
| tipo = Sito di "[[problem solving]]"
Riga 9:
| registrazione = libera
| stato corrente = Attivo
| screenshot =
}}
'''Project Euler''' (
Vengono inoltre proposti nuovi problemi periodicamente sin dalla creazione del progetto, avvenuta nel [[2001]]. Col sito, è stato creato anche un forum dedicato dove l'utente può discutere degli esercizi una volta risolti, infatti è permesso accedere al [[Thread (comunicazione online)|thread]] soltanto dopo aver risolto l'esercizio corrispondente. Oltre alla pagina dedicata del forum, una volta risolto un dato problema è
Il sito consta di 822 problemi in data 24 dicembre 2022.
== Esempio di un problema e la sua risoluzione ==
Il primo problema del Project Euler è:
<blockquote>If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.
Riga 30 ⟶ 29:
<blockquote> Se elenchiamo tutti i numeri naturali fino al 10 che sono multipli di 3 o di 5, otteniamo 3, 5, 6 e 9. La somma di tutti i multipli è 23.
Trova la somma di tutti i multipli di 3 o di 5 sotto 1000.<ref>Nota: questo è l'[[Disgiunzione inclusiva|OR inclusivo]] non quello [[Disgiunzione esclusiva|esclusivo]].</ref>
</blockquote>
Riga 44 ⟶ 43:
</pre>
[[Python]]:
<
print sum(x for x in xrange(1, 1000) if x%3==0 or x%5==0)
</syntaxhighlight>
[[C++]]:
<
#include <iostream>
using namespace std;
Riga 60 ⟶ 59:
return 0;
}
</syntaxhighlight>
Per i problemi più complicati, diventa importante trovare un algoritmo efficiente. Per questo problema, possiamo ridurre di molto i calcoli utilizzando il [[principio di inclusione
: <math>sum(n) = \sum_{i=1}^{\left \lfloor \frac{n}{3} \right \rfloor} 3i + \sum_{i=1}^{\left \lfloor \frac{n}{5} \right \rfloor} 5i - \sum_{i=1}^{\left \lfloor \frac{n}{15} \right \rfloor} 15i</math>
Riga 69 ⟶ 68:
Implementazione in python:
<
def sum1toN(n):
return n * (n + 1) / 2
Riga 77 ⟶ 76:
sumMultiples(1000, 3) + sumMultiples(1000, 5) - sumMultiples(1000, 15)
</syntaxhighlight>
Nella notazione [[O-grande]], l'algoritmo a forza bruta è O(n) e l'algoritmo efficiente è O(1) (assumendo costante il tempo per le operazioni aritmetiche).
==
== Voci correlate ==
* [[Eulero]]
▲{{references}}
== Collegamenti esterni ==
* {{Collegamenti esterni}}
*{{cita web|http://euleres.zzl.org/|EulerES : Project Euler in spagnolo}}
*{{cita web | 1 = http://eulerdz.toile-libre.org/ | 2 = EulerDZ : Project Euler in francese | accesso = 8 maggio 2010 | urlarchivio = https://web.archive.org/web/20100522061217/http://eulerdz.toile-libre.org/ | dataarchivio = 22 maggio 2010 | urlmorto = sì }}
[[Categoria:Applicazioni dell'informatica]]▼
[[Categoria:Competizioni matematiche]]
[[Categoria:Iniziative web per la matematica]]
|