Par combien de zéros se finit 1000! ?

L’une des plus grandes méprises à propos des mathématiques, que nous perpétuons dans nos salles de classe, c’est que le professeur semble connaître la réponse de tous les problèmes qui sont traités. Cela donne l’impression à l’élève qu’il y a quelque part un livre contenant toutes les réponses des questions intéressantes, et que les professeurs connaissent ces réponses. Et que si nous pouvions mettre la main sur ce livre, tout serait réglé. C’est tellement contraire à la vraie nature des mathématiques.

Léon Henkin

Lorsque j’étais en Terminale, mon prof de maths a posé la « question défi » suivante à la classe :

❔ Par combien de zéros finit 1000! ? Le nombre 1000! signifie 1000\times 999 \times 998\times \cdots\times 3\times 2 \times 1 et se prononce « factorielle 1000 ».

Toujours très enthousiaste à l’idée de résoudre ce genre de défis, je me souviens avoir passé un certain temps chez moi à combattre ce problème. Finalement, j’ai trouvé une solution et je l’ai expliquée fièrement aux intéressés. Puis un an plus tard, en étant en classes préparatoires, je suis retombé sur cet énoncé dans un bouquin d’exercices. J’ai alors consulté la solution, curieux de voir leur méthode, et j’ai été très déçu du fait que c’était en fait ce que j’avais fait mais expliqué avec du vocabulaire avancé rendant le tout assez indigeste.

Avant de traiter cette question, le bouquin demandait dans un premier temps de montrer la formule de Legendre.

❔ Soit p un nombre premier et n un entier naturel. On note v_p(n!) la valuation p-adique de n!, c’est-à-dire la plus grande puissance M tel que p^M divise n!. Montrer la formule de Legendre :

    \[v_p(n!)=\sum_{k=1}^{+\infty} \lfloor \frac{n}{p^k} \rfloor\]

Sachez qu’il n’y avait pas besoin d’avoir vu avant la valuation p-adique, on la découvrait dans cet exercice. Suite à cette première question, on demandait alors d’en déduire le nombre de zéros dans 1000!. Je vous écris ici la solution telle que dans le bouquin :

Oui, exceptionnellement je vous invite ici à lire une solution avant de solliciter votre réflexion ! (vous pouvez évidemment réfléchir avant comme d’habitude si vous préférez)

Il suffit de calculer la plus grande puissance de N tel que 10^N | 1000!. Comme 10=2\times 5 on a N=\min(v_2(1000!,v_5(1000!)). Par la formule de Legendre, on trouve donc

    \[v_5(1000!)=\lfloor \frac{1000}{5} \rfloor +\lfloor \frac{1000}{25} \rfloor + \lfloor \frac{1000}{125} \rfloor + \lfloor\frac{1000}{625} \rfloor =249\]

Et

    \[v_2(1000!)\geq \lfloor \frac{1000}{2} \rfloor=500\]

Ainsi 1000! se termine par 249 zéros.

————————————-

En fait, selon moi, cette solution est claire seulement si vous avez bien réfléchi à la question avant et que vous avez trouvé la réponse… Ce n’est pas forcément une mauvaise chose étant donné qu’on apprend toujours beaucoup plus par soi-même qu’en lisant un corrigé, aussi bien écrit soit-il. C’est ce que j’aimerais d’ailleurs vous montrer ici. Pourquoi ai-je appris beaucoup plus de choses en réfléchissant en Terminale à cette question par moi-même plutôt que ceux consultant cette solution en prépa ?

Alors on est parti, je me remets dans ma peau d’élève de Terminale et je vous explique mon raisonnement.

✏️ A vous de jouer ! Si comme moi vous voulez mieux comprendre, oubliez la solution du bouquin que vous venez de lire (le mieux étant de n’y avoir rien compris) et réfléchissez par vous-mêmes au problème !

Étape 1 : Comprendre la question

La première chose naturelle à se dire c’est : qu’est-ce que c’est que cette question ?! Je ne parle pas de son intérêt (en maths ce n’est pas ça l’important) mais plutôt du fait que pour connaître le nombre de zéros par lequel finit un nombre il suffit de le calculer et d’écrire son résultat.

Par exemple, si on nous demandait le nombre de zéros de 36\times 55. On calculerait alors le résultat

    \[36\times 55 =1980\]

et on en déduirait que cela termine par un zéro. Dans notre problème, il suffit donc a priori de calculer 1000\times 999\times 998\times...\times 2\times 1. Mais c’est très long de taper cela à la calculatrice et on sent que le résultat va être grand, sans doute trop grand pour notre calculette. On peut essayer avec l’ordinateur pour ceux qui savent programmer (c’est d’ailleurs un exercice de programmation classique d’écrire un programme permettant de calculer n!) mais en le faisant on se rend compte que même pour notre ordinateur le nombre est trop grand… Il faut donc se résoudre au fait qu’on ne pourra pas calculer le résultat…

Heureusement la question ne nous demande pas le résultat. Elle nous demande juste de trouver le nombre de zéros par lequel ce résultat termine. Comment pouvons-nous trouver cela ?

Étape 2 : Simplifier la question

Le nombre 1000! est très grand, on peut se demander ce qui se passe pour n! en général avec notamment des petites valeurs de n. Calculons donc ces premières valeurs :

Avec ces 20 premières valeurs, on se rend compte qu’il y a un zéro qui s’ajoute à la fin à 5!, 10!, 15! et 20!. Autrement dit il semble qu’à tous les multiples de 5 on ait un zéro qui s’ajoute. On a donc la conjecture suivante :

Conjecture : Le nombre (5k)! pour k\geq 1 entier finit par k zéros.

Pour montrer ce genre de propriété valable pour tout entier k, on aime bien raisonner par récurrence. Pour k\geq 1, on note P_k la propriété « Le nombre (5k)! finit par k zéros. ».

Initialisation : Pour k=1, on a 5!=120 qui finit bien par 1 zéro.

Hérédité : Soit k\geq 1 tel que P_k soit vraie. Essayons alors de montrer que P_{k+1} est vraie. Pour cela, il faut réussir à lier (5(k+1))! et 5k!. On a

    \[(5(k+1))!=(5k+5)(5k+4)(5k+3)(5k+2)(5k+1)(5k!)\]

On sait, par hypothèse de récurrence, que (5k)! finit par k zéros. Pourquoi le fait de multiplier ce nombre par (5k+5)(5k+4)(5k+3)(5k+2)(5k+1) rajouterait-il un zéro ? Mmm… Quand est-ce que multiplier un nombre par quelque chose lui rajoute un zéro ? Ah oui c’est quand on fait une multiplication par 10. Mais y-a-t-il un 10 qui apparaît ici ? Et attendez, si je fais une multiplication par 100 il y a deux zéros qui se rajoutent ! Et par 1000 il y a 3 zéros. Donc typiquement le passage de 999! à 1000! doit forcément rajouter 3 zéros. Notre conjecture est fausse !!!

Étape 3 : Les échecs aident à comprendre

Bon retour au point de départ… Pas complètement car, malgré notre mauvaise conjecture, on s’est rappelé que multiplier un nombre par 10^p lui rajoute p zéros. Pourquoi d’ailleurs ? En fait, cela est spécifique à la façon dont on écrit les nombres, en base 10. Par exemple, lorsque j’écris le nombre 1789 cela signifie :

    \[1789 = 1\times 10^3 + 7\times 10^2 + 8 \times 10^1+ 9 \times 10^0.\]

Du coup, un nombre finit par un zéro si et seulement si le chiffre qui est devant le 10^0 est un 0. Mais on peut alors le factoriser par 10. Par exemple on a

    \[230 = 2\times 10^2+3\times 10^1+0\times 10^0 = 10\times (2\times 10^1+3\times 10^0).\]

Plus généralement, un nombre finit par N zéros si et seulement si tous les chiffres devant 10^{N-1},10^{N-2},\cdots, 10^1,10^0 sont des 0 et il est alors factorisable par 10^N. S’il finit par exactement N zéros, cela signifie que le chiffre devant 10^N n’est par contre pas nul. Autrement dit, N est la plus grande puissance de 10 qui divise un nombre finissant exactement par N zéros.

Pour revenir à notre problème en particulier, on cherche donc le plus grand nombre N tel que 10^N divise 1000!.

Étape 4 : Finir le travail

Pour être sûr d’avoir bien compris, on peut revenir au tableau d’exemple qu’on avait fait.

On obtient un premier zéro pour 5! mais où est le \times 10 ici ? En fait si? il apparait bien car 10=5\times 2. Donc

    \[5!=5\times 4\times 3\times 2 \times 1=10\times 4\times 3\times1.\]

Être divisible par 10 c’est être divisible par 5 et par 2. C’est mieux de penser comme cela car 2 et 5 sont des nombres premiers, or un fameux théorème nous dit que tout nombre peut s’écrire de façon unique comme un produit de nombre premiers. Donc 1000! peut s’écrire comme un produit de nombre premiers et dans ce produit il y aura 2 à une certaine puissance, disons \alpha, et 5 à une certaine puissance, disons \beta. On peut remarquer qu’il y a plus de \times 2 qui vont apparaître dans 1000! donc on aura \beta\leq\alpha. Le nombre maximal N tel que 10^N divise 1000! sera donc \beta. Il nous suffit maintenant de déterminer ce \beta.

Quand est-ce qu’un \times 5 apparaît ? Tous les multiples de 5, comme on avait déjà remarqué. Mais l’erreur qu’on avait faite c’est que à 25! on a un \times 25=\times 5\times 5 qui apparait donc on a en fait 2 zéros qui sont ajoutés. On aura deux zéros ajoutés à chaque multiple de 25. Puis pour les multiples de 5\times 5\times 5=125 on aura 3 zéros ajoutés. Et 4 zéros pour les multiples de 5^4=625. Ensuite 5^5=2125>1000 donc on n’en rencontrera pas.

Faisons un petit tableau récapitulatif :

On peut compter un zéro pour chaque multiple de 5 auquel on ajoute un zéro pour chaque multiple de 25 puis un zéro pour chaque multiple de 125 et enfin encore un zéro pour chaque multiple de 625. Combien y-a-t-il de multiples de 5 jusqu’à 1000 ?

Ce sont tous les nombres de la forme 5k tels que 1\leq5k\leq 1000. k peut donc varier de 1 à 200, il y a donc 200 multiples de 5 en dessous de 1000.

Pour compter les multiples de 25 jusqu’à 1000, on procède de la même manière. Ce sont les nombres de la forme 25k avec 1\leq25k\leq 1000. Cette inégalité est vérifiée pour les k compris entre 1 et 40. Il y a donc 40 multiples de 25 en dessous de 1000.

De même, les multiples de 125 sont les nombres de la forme 125k avec 1\leq 125k\leq 1000. Cette inégalité est vérifiée pour les k compris entre 1 et 8. Il y a donc 8 multiples de 125 en dessous de 1000.

Enfin, il n’y a qu’un seul multiple de 625 en dessous de 1000. Finalement on en déduit donc que le nombre 1000! se termine par

    \[200 + 40 + 8 + 1 = 249 \text{ zéros.}\]

On peut être fiers de nous ! 😀

Conclusion

Qu’avons nous appris de plus en réfléchissant par nous-mêmes ?

Déjà on met le point sur ce qui n’est pas évident pour nous personnellement. Cela peut être par exemple ici l’écriture décimale d’un nombre, le raisonnement par récurrence, notre capacité à écrire un programme pour calculer des factorielles, le décompte du nombre de zéros, etc. Vous avez peut être trouvé que j’allais parfois trop lentement ou parfois trop vite dans ce raisonnement ? C’est normal, c’est un raisonnement personnel et donc je passe du temps sur ce qui a paru difficile pour moi et je passe moins de temps sur ce qui m’a paru simple. Mais cela peut être différent pour vous d’où la nécessite de réfléchir par soi-même !

A noter qu’on voit aussi qu’il arrive d’emprunter un mauvais chemin. La conjecture de départ qu’on a faite est pourtant plausible mais parfois les premiers exemples ne sont pas de bons indicateurs ! C’est donc important d’être rigoureux.

Pour aller plus loin

Vous pouvez revenir sur la solution du bouquin et sans doute mieux la comprendre maintenant. Vous pouvez aussi démontrer la formule de Legendre qui, de façon plus générale, est un moyen plus rapide de calculer le nombre de zéros pour n’importe quelle factorielle. En fait, c’est une façon concise de faire ce qu’on a fait, c’est souvent comme cela en maths. La première fois on bricole comme on peut, puis quand on a du recul, on généralise et on essaye d’aller au plus court 🙂

Notons aussi que notre réponse provient du fait qu’on écrive les nombres en base 10. Néanmoins on peut tout à fait étendre notre raisonnement à n’importe quelle base, à vous de voir ce qu’il faut adapter !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *