Lucas Willems

LUCAS WILLEMS

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

English

Project Euler 28 : solution Python

Article

Voici un résumé de l'énoncé du problème 28 "Number spiral diagonals" du Project Euler (traduction complète en français ici) :

What is the sum of the numbers on the diagonals in a 1001 by 1001 spiral formed in the same way?

Compréhension du problème

Reformulons le problème : il nous faut trouver la somme des nombres se trouvant sur les diagonales d'une spirale 1001x1001. Pour commencer, listons les nombres sur les diagonales d'une spirale \(7 \times 7\) qui sont :

$$1\ 3\ 5\ 7\ 9\ 13\ 17\ 21\ 25\ 31\ 37\ 43\ 49$$

Nous pouvons voir que l'écart entre les termes de 1 à 5 est de 2, que l'écart entre les termes de 5 à 9 est de 4 et que l'écart entre les termes de 9 à 13 est de 6. Nous pouvons donc conjecturer que pour une spirale \(n \times n\), nous avons \(n/2 - 1\) groupes de 4 nombres pour lesquels l'écart va de 2 à \(n-1\) avec un pas de 2.

Le programme

Voici donc le programme Python que nous pouvons utiliser pour résoudre ce problème :

#Dimension de la spirale
dim = 1001
resultat = n = 1
for k in range(2, dim, 2):
    for j in range(4):
        n += k
        resultat += n
print(resultat)

Le résultat

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

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.