Lucas Willems

LUCAS WILLEMS

Un étudiant de 21 ans passionné par les maths et la programmation

English

Project Euler 8 : solution Python

Article

Voici un résumé de l'énoncé du problème 8 "Largest product in a series" du Project Euler (traduction complète en français ici) :

Find the greatest product of thirteen consecutive digits in the 1000-digit number.

Compréhension du problème

Reformulation du problème : il nous faut trouver le plus grand produit de 13 chiffres consécutifs du nombre de 1000 chiffres écrit dans l'énoncé du problème sur le site.

Pour résoudre ce problème, nous pouvons suivre le raisonnement proposé dans le problème, c'est à dire lire les chiffres du nombre un par un et faire, à chaque nouveau chiffre lu, le produit des 13 derniers et le comparer au plus grand produit trouvé.

Le programme

Voici le programme Python que j'ai utilisé pour résoudre ce problème :

def produit(nbs):
    prod = 1
    for i in nbs:
        prod *= int(i)
    return prod
chiffres = "73167176531330624919225119674426574742355349194934\
96983520312774506326239578318016984801869478851843\
85861560789112949495459501737958331952853208805511\
12540698747158523863050715693290963295227443043557\
66896648950445244523161731856403098711121722383113\
62229893423380308135336276614282806444486645238749\
30358907296290491560440772390713810515859307960866\
70172427121883998797908792274921901699720888093776\
65727333001053367881220235421809751254540594752243\
52584907711670556013604839586446706324415722155397\
53697817977846174064955149290862569321978468622482\
83972241375657056057490261407972968652414535100474\
82166370484403199890008895243450658541227588666881\
16427171479924442928230863465674813919123162824586\
17866458359124566529476545682848912883142607690042\
24219022671055626321111109370544217506941658960408\
07198403850962455444362981230987879927244284909188\
84580156166097919133875499200524063689912560717606\
05886116467109405077541002256983155200055935729725\
71636269561882670428252483600823257530420752963450"
resultat = 0
for i in range(len(chiffres)-13):
    prod = produit(chiffres[i:i+13])
    if prod > resultat:
        resultat = prod
print(resultat)

Je ne pense pas avoir besoin de donner des explications particulières pour ce programme, si ce n'est que la fonction \(produit\) retourne le produit de tous les nombres se trouvant dans la liste passée en paramètre.

Le résultat

La réponse à ce problème est 23514624000.

Recherche

Voici les recherches relatives à cette page :

Commentaires

Qu'en pensez-vous ? Donnez moi votre avis (positif ou négatif) pour que je puisse l'améliorer.