Project euler

Project euler

Project Euler


Euler
Project Euler
URL projecteuler.net
Commercial non
Type de site résolution de problèmes
Langue(s) anglais
Inscription gratuite
Créé par Colin Hughes (aka Euler)
Lancement 5 octobre, 2001
État actuel en activité

Project Euler est un site web dédié à une série de problèmes mathématiques dans l'intention d'être résolus grâce à des 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. Cela consiste actuellement en plus de 250 problèmes de difficulté variable ; chaque problème est conçu pour exécuter en moins d'une minute un algorithme efficace sur un ordinateur à puissance modeste. De nouvelles questions ont été progressivement ajoutées depuis la création du projet en 2001. Le site présente un forum spécifique à chaque problème, accessible après que l'utilisateur ait résolu le problème en question. Il y a également une section "Scores" qui classe les utilisateurs selon le nombre de problèmes résolus. Il existe 5 différents niveaux de classement (dénotés par les solides de Platon), plus un niveau représenté par une boule, plus un niveau spécial qui range les membres qui ont résolus au moins la moitié des 25 problèmes les plus récents.

Exemple de problème et solutions

La traduction du premier problème pourrait être :

Si on liste tous les nombres naturels inférieurs à 10 qui sont multiples de 3 ou 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 à 1000.

Bien que ce problème soit plus simple que le problème typique, il sert à illustrer la différence potentielle qu'effectue un algorithme efficace. L'algorithme brute-force examine chaque entier naturel plus petit que 1000 et garde une somme courante de ces critères rencontrés. Cette méthode est simple à implémenter, comme le montrent les exemples suivants dans différents langages de programmation :

PHP:

<?php
  $sum = 0;
  for ($i = 0; $i < 1000; $i++) 
    if ( $i % 3 == 0 || $i % 5 == 0 )
      $sum += $i; 
  echo $sum;
?>

Python:

print sum(x for x in xrange(1, 1000) if x%3==0 or x%5 == 0)

C++:

#include <iostream>
using namespace std;
int main( ) {
  int sum = 0;
  for (int i = 0; i < 1000; i++)
    if ( i % 3 == 0 || i % 5 == 0 )
      sum += i;
  cout << sum << endl;
  return 0;
}

Java:

public class Main {
  public static void main(String[] args) {
    int sum = 0;
    for (int i = 0; i < 1000; i++)
      if ( i % 3 == 0 || i % 5 == 0 )
        sum += i;
    System.out.println(sum);
  }
}

JavaScript:

var sum = 0;
 
for(var i = 1; i < 1000; i++) {
  if(i % 3 || i % 5) sum += i;
}
 
alert(sum);

Pour les problèmes plus complexes, l'importance de trouver un algorithme efficace s'accroît. Pour ce problème, nous pouvons réduire 1000 opérations par une poignée en utilisant le principe d'inclusion-exclusion et une forme fine de la formule de somme :

sum(n) = \sum_{i=1}^{\lfloor \frac{n}{3} \rfloor} 3i + \sum_{i=1}^{\lfloor \frac{n}{5} \rfloor} 5i - \sum_{i=1}^{\lfloor \frac{n}{15} \rfloor} 15i
\sum_{i=1}^n ki = k\frac{(n)(n+1)}{2}

Implémentation en Python:

def sum1toN(n):
   return n * (n + 1) / 2
 
def sumMultiples(limit, a):
   return sum1toN((limit - 1) / a) * a
 
sumMultiples(1000, 3) + sumMultiples(1000, 5) - sumMultiples(1000, 15)

Grâce à cet algorithme, la solution pour 10 000 000 peut être obtenue aussi rapidement que pour 1 000. En notation de Landau, l'algorithme brute-force est O(n) et l'algorithme efficace est O(log n).

Notes et références

  • (en) Cet article est partiellement ou en totalité issu d’une traduction de l’article de Wikipédia en anglais intitulé « Project euler ».
  • Portail des mathématiques Portail des mathématiques
Ce document provient de « Project Euler ».

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Project euler de Wikipédia en français (auteurs)

Игры ⚽ Нужен реферат?

Regardez d'autres dictionnaires:

  • Project Euler — URL projecteuler.net Commercial non …   Wikipédia en Français

  • Project Euler — ] def multiple(i): return i % 3 = 0 or i % 5 = 0print sum(filter(multiple, range(1, 1000))) References External links * [http://projecteuler.net/ Home page] …   Wikipedia

  • Euler (disambiguation) — Euler may refer to: *Leonhard Euler, a Swiss mathematician and physicist *Carl Euler, a biologist *Ulf von Euler, a Swedish physiologist and pharmacologist, Nobel Prize in Medicine in 1970. *Hans von Euler Chelpin, a Swedish biochemist, Nobel… …   Wikipedia

  • Euler diagram — Euler diagrams or Euler circles are a diagrammatic means of representing sets and their relationships. They are the modern incarnation of Euler circles, which were invented by Leonhard Euler in the 18th century. Overview Euler diagrams usually… …   Wikipedia

  • Euler line — In geometry, the Euler line, named after Leonhard Euler, is a line determined from any triangle that is not equilateral; it passes through several important points determined from the triangle. In the image, the Euler line is shown in red. It… …   Wikipedia

  • Euler's theorem — In number theory, Euler s theorem (also known as the Fermat Euler theorem or Euler s totient theorem) states that if n is a positive integer and a is coprime to n , then:a^{varphi (n)} equiv 1 pmod{n}where φ( n ) is Euler s totient function and …   Wikipedia

  • Euler'sche Zahl — Die eulersche Zahl e = 2,718281828459... (nach dem Schweizer Mathematiker Leonhard Euler) ist eine irrationale und sogar transzendente reelle Zahl. Die eulersche Zahl ist die Basis des natürlichen Logarithmus und der (natürlichen)… …   Deutsch Wikipedia

  • Leonhard Euler — Infobox Scientist name = Leonhard Euler|box width = 300px |200px image width = 200px caption = Portrait by Johann Georg Brucker birth date = birth date|df=yes|1707|4|15 birth place = Basel, Switzerland death date = 18 September (O.S 7 September)… …   Wikipedia

  • Leonhard Euler — Retrato de Leonhard Euler, pintado por Johann Georg Bruck …   Wikipedia Español

  • Liste des sujets nommés d'après Leonhard Euler — En mathématiques et en physique, il existe un grand nombre de sujets nommés en l honneur de Leonhard Euler, dont beaucoup sont désignés par leur rôle : équation, formule, identité, nombre (unique ou séquence) ou une autre entité… …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”