Project Euler
Project Euler est un site web proposant une sĂ©rie de problĂšmes mathĂ©matiques conçus pour ĂȘtre rĂ©solus Ă l'aide de programmes informatiques. Le but du projet est d'attirer des adultes et des Ă©lĂšves intĂ©ressĂ©s par les mathĂ©matiques et lâinformatique. Il comprend actuellement plus de 700 problĂšmes[Note 1] - [1] de difficultĂ©s variables, chacun pouvant ĂȘtre rĂ©solu en principe en moins d'une minute par un algorithme efficace sur un ordinateur de puissance modeste. De nouveaux problĂšmes sont progressivement ajoutĂ©s, actuellement au rythme d'un toutes les deux semaines, depuis la crĂ©ation du site en 2001. Un forum spĂ©cifique Ă chaque problĂšme est accessible aux utilisateurs qui l'ont rĂ©solu. Une section Scores classe Ă©galement les membres selon le nombre de problĂšmes rĂ©solus. Il existe quatorze niveaux de classement selon le nombre de problĂšmes rĂ©solus, ainsi qu'un classement spĂ©cial basĂ© sur la vitesse de rĂ©solution des derniers problĂšmes parus.
Project Euler. | |
Adresse | projecteuler.net |
---|---|
Commercial | Non |
Type de site | Résolution de problÚmes mathématiques et algorithmiques |
Langue | Anglais |
Inscription | Gratuite |
Créé par | Colin Hughes, alias euler |
Lancement | |
Depuis la création du site en 2001, plus de 1 000 000 utilisateurs se sont enregistrés sur le site[2].
Exemple de problĂšme et solutions
Une traduction du premier problĂšme est[Note 2] :
« Si on liste tous les entiers naturels inférieurs à 10 qui sont multiples de 3 ou de 5, on obtient 3, 5, 6 et 9. La somme de ces nombres est 23. Trouvez la somme de tous les multiples de 3 ou de 5 inférieurs à 1 000[Note 3]. »
Bien que ce problÚme soit l'un des plus simples du site, il permet d'illustrer le gain de temps potentiel d'un algorithme efficace[Note 4] par rapport à un algorithme naïf. L'algorithme brute-force examine chaque entier naturel inférieur à 1 000 et actualise la somme de ceux qui remplissent les critÚres. Cette méthode est facile à implémenter ; en pseudo-code, cela peut s'écrire :
initialiser SOMME Ă 0; pour n variant de 1 Ă 999 faire si n est un multiple de 3 ou de 5 alors // Autrement dit si n est divisible par 3 ou par 5 ajouter n Ă SOMME; fait; renvoyer SOMME
Cependant, pour les problÚmes plus complexes, trouver un algorithme efficace devient indispensable. Pour cet exemple, nous pouvons réduire 1 000 opérations à quelques-unes en utilisant le principe d'inclusion-exclusion et une formule de sommation :
OĂč dĂ©signe la somme des multiples de infĂ©rieurs Ă et dĂ©signe l'arrondi Ă l'entier infĂ©rieur.
Implémentation en Python :
def sum_1_to_n(n):
return n * (n + 1) / 2
def sum_multiples(limit, a):
return sum_1_to_n((limit - 1) // a) * a
sum_multiples(1000, 3) + sum_multiples(1000, 5) - sum_multiples(1000, 15)
GrĂące Ă cet algorithme, la solution pour une borne supĂ©rieure Ă 10 000 000 peut ĂȘtre obtenue presque aussi rapidement que pour 1 000. En notation de Landau, l'algorithme brute-force est en O(n) tandis que l'algorithme efficace est en O(1) (si on considĂšre que le coĂ»t des opĂ©rations arithmĂ©tiques est constant).
Traductions du Projet Euler
à ce jour, il existe différentes traductions du Projet Euler (classées par ordre alphabétique) :
Langue | Lien |
---|---|
âą A | |
Anglais (Langue officielle) | https://projecteuler.net |
Allemand | http://projekteuler.de/ |
âą C | |
Chinois | Website 1: https://pe-cn.github.io/
Website 2: http://pe.spiritzhang.com/ |
Coréen | http://euler.synap.co.kr/ |
âą F | |
Français | https://projet-euler.fr
https://web.archive.org/web/20120310103855/http://toprog.fr.nf/index.php?Page=Exercices&Section=Euler |
âą P | |
Persan | https://marhale3.github.io/ |
âą R | |
Roumain | http://projecteuler.radumurzea.net/ |
Russe | http://euler.jakumo.org/ |
Liens externes
Notes et références
Notes
- 719 problĂšmes au 7 juin 2020.
- L'énoncé original est « 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. Find the sum of all the multiples of 3 or 5 below 1000. »
- C'est le OU inclusif qui est utilisé ici.
- En informatique, quand un algorithme répond correctement au problÚme posé, on cherche souvent à l'optimiser. On veut que l'algorithme utilise le moins de temps et de mémoire possible. Voir ici pour plus de précisions.
Références
- (en) Cet article est partiellement ou en totalitĂ© issu de lâarticle de WikipĂ©dia en anglais intitulĂ© « Project Euler » (voir la liste des auteurs).
- (en) « Project Euler - Problems », sur projecteuler.net (consulté le ).
- (en) « Project Euler - Statistics », sur projecteuler.net (consulté le ).