Pour tout {n\in\mathbb{N}^*}, on note {f(n)} le dernier chiffre non nul dans l’écriture décimale de {n}.
Par exemple, {f(1357)=f(135700)=7}.
L’objectif de l’exercice est de trouver une méthode de calcul de {f(n!)}.
Dans tout l’énoncé {a\equiv b} signifie «{a} et {b} sont congrus modulo {10}».
Question 1. Écrire une fonction Python calculant {f(n)}. |
Question 2.(a) Soient {n,n'} dans {\mathbb{N}^*}, avec {f(n)\ne5} et {f(n')\ne5}. Montrer que {\begin{cases}f(nn')\equiv f(n)f(n')\;[10]\cr f(nn')\ne5\end{cases}} |
Question 2.(b) Pour tout {k\ge0}, on pose {\mu_k=\dfrac12\displaystyle\prod_{j=1}^4(5k+j)}. Écrire une fonction Python calculant {\mu_{k}} puis montrer que {\mu_{k}} est toujours congru à {12} modulo {500}, et donc {f(\mu_{k})=2} (utiliser la division euclidienne de {k} par {4}). Indication pour Python : charger le package sympy. |
On note alors {u_n=\Bigl(\displaystyle\prod_{k=0}^{q_{n}-1}\mu_k\Bigr)\;\Bigl(\displaystyle\prod_{j=1}^{r_{n}}(5q_{n}+j)\Bigr)}
(un produit vide est considéré comme valant {1}).
Question 3.(a) Montrer que {n!=10^{q_{n}}\,q_{n}!\;u_n}. On en déduit bien sûr {f(n!)=f(q_{n}!\,u_n)}. |
Question 3.(b) En déduire : {\forall\,n\in\mathbb{N},\;\begin{cases}f(n!)\equiv f(q_{n}!)f(u_{n})\\ f(n!)\ne 5\end{cases}} Justifier également le fait que {f(u_{n})\equiv u_{n}}. |
Question 3.(c) Montrer que si {n\ge5} alors {u_{n+20}\equiv 6u_{n}\equiv u_{n}} (on écrira {n+20=5(q_{n}+4)+r_{n}}). |
Question 3.(d) Montrer que la suite des restes dans la division de {u_{k}} par {10}, pour {5\le k\le 24}, est :{2, 2, 4, 2, 8, 4, 4, 8, 4, 6, 8, 8, 6, 8, 2, 6, 6, 2, 6, 4}Indication : on pourra traiter d’abord le cas où {n} est multiple de {5}, et montrer comment les autres valeurs se calculent de proche en proche. |
Question 3.(e) En utilisant ce qui précède, programmer une fonction calculant {f(n!)} pour tout {n} (bien sûr sans utiliser la fonction factorielle, mais seulement des congruences, tous les se faisant dans {[0,n]}). |