De surprenantes arithmétiques (II)
Dans un premier article publié dans le n° 528 de notre revue, André-Jean Glière a évoqué les nombres palindromes, les nombres de Lychrel, l’algorithme de Kaprekar et les nombres heureux. Dans ce second article, il généralise l’algorithme définissant les nombres heureux pour aboutir aux transformations agréables et aux nombres narcissiques. Il évoque ensuite (mais dans un article uniquement en ligne) les nombres parfaits, les nombres amiables et enfin les suites aliquotes.
André-Jean Glière
© APMEP Mars 2019
⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅♦⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅
Transformations agréables \(S_p\). Nombres narcissiques.
On généralise la transformation \(S_2\) qui, rappelons-le, est définie de la manière suivante : pour tout entier \(N\), écrit \(\overline{a_n a_{n-1}\ldots a_1a_0}\) en base \(10\), \(S_2(N)=\displaystyle\sum_{k=0}^na_k^2\).
L’algorithme associé à la transformation \(S_p\) est le suivant :
Soit un entier naturel \(N\) écrit en base \(10\) : \(N=\overline{a_n a_{n-1}\ldots a_1 a_0}\).
On calcule la somme des puissances \(p\) de ses chiffres : \(S_p(N)=\displaystyle\sum_{k=0}^n a_k^p\), puis on réitère le calcul avec la somme obtenue ; on construit ainsi la suite des itérées : \(S_p(N)\), \(S_p\bigl(S_p(N)\bigr)\), \(S_p\Bigl(S_p\bigl(S_p(N)\bigr)\Bigr)\), jusqu’à ce qu’apparaisse un résultat remarquable.
Il ne s’agit pas de faire ici une étude complète de chaque transformation \(S_p\), comme nous l’avons fait dans le premier article pour la transformation \(S_2\). Souvenons-nous que la suite des itérées \(S_2(N)\), \(S_2\bigl(S_2(N)\bigr)\), \(S_2\Bigl(S_2\bigl(S_2(N)\bigr)\Bigr)\), … est :
-
soit constante à partir d’un certain rang et égale à \(1\) et dans ce cas \(N\) est dit heureux,
-
soit telle que, à partir d’un certain rang, ses termes appartiennent tous à l’ensemble \(\{4,\ 16,\ 37,\ 58,\ 89,\ 145,\ 42,\ 20\}\) et dans ce cas \(N\) est dit (le pauvre) malheureux.
Contentons-nous d’étudier de manière détaillée la transformation \(S_3\) et de donner en conclusion quelques éléments sur les autres transformations.
Cas particulier : La transformation \(S_3\)
Comme nous l’avons fait pour \(S_2\), essayons l’année en cours puis l’année précédente pour voir, et si on ne voit rien, l’année encore précédente et encore précédente :
La suite des itérées de \({2018}\) est \[({2018},\ 521,\ 134,\ 92,\ 737,\ 713,\ 371,\ 371,\ 371,\ {\dots}).\] \[S_3(371)=3^3+7^3+1^3=27+343+1=371.\] Voilà un joli résultat :
Je vous rappelle que \(S_2\) n’a qu’un seul point fixe égal à \(1\). Ici, nous en avons déjà deux : \(1\) et \(371\).
Remontons dans le temps.
La suite des itérées de \({2017}\) est \[({2017},\ 352,\ 160,\ 217,\ 352,\ 160,\ 217,\ 352,\ {\dots}).\] Pas mal. Un cycle d’ordre \(3\) : \(160\), \(217\), \(352\).
La suite des itérées de \({2016}\) est \[\begin{array}{@{}r@{}}
({2016},\ 225,\ 141,\ 66,\ 432,\ 99,\ {1458},\ 702,\ 351,\\
\ 153,\ 153,\ {\dots}).
\end{array}\] \[S_3(153)=1^3+5^3+3^3=1+125+27=153.\] De mieux en mieux :
\(S_3({2015})=134\)… Voir \({2018}\), la suite aboutit au point fixe déjà trouvé \(371\). Rien de nouveau.
La suite des itérées de \({2014}\) est \[({2014},\ 73,\ 370,\ 370,\ {\dots})\] \(S_3(370)=3^3+7^3=27+343=370\). Quatrième point fixe de \(S_3\) et pas n’importe lequel après \(371\), ce qui était prévisible :
La suite des itérées de \({2013}\) est \[({2013},\ 36,\ 243,\ 99,\ {1458},\ {\dots}).\] Voir \({2016}\) et le point fixe \(153\).
Pour \({2012}\) : \(({2012},\ 17,\ 344,\ 155,\ 251,\ 134,\ {\dots})\) ; voir \({2018}\) et le point fixe \(371\).
L’année \({2011}\) nous informe que le point fixe \(1\) n’est pas le privilège du seul nombre \(1\). En effet \(S_3({2011})=10\) et \(S_3(10)=1\).
\({2010}\) et \({2007}\) aboutissent toutes les deux au point fixe \(153\) et \({2009}\) au point fixe \(371\).
Quant à \({2008}\) : \(({2008}, 520, 133, 55, 250, 133, 55,\ {\dots})\). Voilà une nouvelle situation : un second cycle d’ordre \(3\) : \(55\), \(250\), \(133\).
Résumons : quatre points fixes et deux cycles d’ordre \(3\). Question banco à \(500\) € : en a-t-on fini ? Non, il reste un point fixe et deux cycles d’ordre \(2\).
En effet : \(407=4^3+7^3=64+343=407\).
La suite des itérées de \(47\) bien sûr, mais aussi celles de \(77\) et de \(98\) aboutissent à \(407\). Vous pouvez le vérifier.
Quant aux deux cycles d’ordre \(2\) :
\[(49,\ 793,\ {1099},\ {1459},\ 919,\ {1459},\ 919,\ {\dots})\]
et
\[(136,\ 244,\ 136,\ 244,\ {\dots})\]
Deux cycles d’ordre \(2\) :
\((919,\ 1\,459)\) et \((136,\ 244)\).
Dans les deux cas, la somme des cubes des chiffres de l’un est égale à l’autre. Cela mériterait un nom, non ? Je propose de les appeler amicubes.
Conclusion : à part \(1\), la transformation \(S_3\) a donc quatre points fixes non triviaux :
\[\Huge 153\quad 370\quad 371\quad 407\]
Elle a deux cycles d’ordre \(2\) et deux cycles d’ordre \(3\) :
\((136,\ 244)\) |
\((919,\ 1459)\) |
Les deux cycles d’ordre 2 de \(S_3\). | |
© Corpse Reviver \((55,\ 250,\ 133)\) |
© cjm6394 \((160,\ 217,\ 352)\) |
Les deux cycles d’ordre 3 de \(S_3\). |
Voici les programmes en Python3 (on dit plutôt scripts pour faire branché) qui mettent en œuvre les notions que nous venons de voir.
Scripts Python
La première fonction somCubChif
prend en paramètre un entier naturel \(n\) et retourne la somme des cubes de ses chiffres.
Fonction somCubChif |
def somCubChif(n) : somme=0 # n%10 et n//10 sont # respectivement le reste et while(n !=0) : # le quotient de la division # euclidienne de n par 10. somme=somme+(n%10)**3 # Ils donnent respectivement le # chiffre des unités et le nombre
n=n//10 # de dizaines de n return somme |
La deuxième fonction aboutitPointFixe
prend un nombre \(n\) en paramètre. Elle retourne Vrai
si les itérées successives de \(n\) aboutissent à l’un des cinq points fixes et Faux
sinon.
Fonction aboutitPointFixe |
def aboutitPointFixe(n) : global s # global s rend lisible la # valeur modifiée de la variable # a en dehors de la fonction. s=n lf=[1,153,370,371,407] lc2=[136,244,919,1459] lc3=[55,250,133,160,217,352] lf=[1,153,370,371,407] while(not(s in l)) : # tant que la somme s # n’est pas dans la liste s=somCubChif(s)# # on réitère le calcul. return (s in lf) # lorsque s est dans la # liste, on retourne un # booléen qui a pour # valeur Vrai si s est un # point fixe et Faux sinon # sinon |
La troisième fonction aboutitCycle2
prend un nombre \(n\) en paramètre. Elle retourne Vrai
si les itérées successives aboutissent à un cycle d’ordre \(2\) et Faux
sinon.
Les commentaires (sauf le dernier) sont identiques pour les deux fonctions suivantes, nous ne les répétons pas.
Fonction aboutitCycle2 |
def aboutitCycle2(n) : global s s=n lf=[1,153,370,371,407] lc2=[136,244,919,1459] lc3=[55,250,133,160,217,352] l=lf+lc2+lc3 while(not(s in l)) : s=somCubChif(s) return (s in lc2) # on retourne un booléen # qui a pour valeur Vrai # si s appartient à un # cycle d’ordre 2 et Faux # sinon. |
La quatrième fonction aboutitCycle3
prend un nombre \(n\) en paramètre. Elle retourne Vrai
si les itérées successives aboutissent à un cycle d’ordre \(3\) et Faux
sinon.
Fonction aboutitCycle3 |
def aboutitCycle2(n) : global s s=n lf=[1,153,370,371,407] lc2=[136,244,919,1459] lc3=[55,250,133,160,217,352] l=lf+lc2+lc3 while(not(s in l)) : s=somCubChif(s) return (s in lc2) # on retourne un booléen # qui a pour valeur Vrai # si s appartient à un # cycle d’ordre 3 et Faux # sinon. |
La cinquième fonction listeNomFixe
permet de lister tous les nombres de \(1\) à nMax
, d’indiquer l’aboutissement des itérées de chacun d’entre eux et de comptabiliser le nombre de fois où on aboutit aux différents points fixes, aux différents cycles d’ordre \(2\) ou d’ordre \(3\).
Fonction listeNomFixe |
def listeNomFixe(nMax) : print(“Liste_des_nombres_aboutissant_à_un_point_fixe_ou_à_un_cycle_d’ordre_2_ou_d’ordre_3_de_1_à_{}”. format(nMax)) c1=0 ;c2=0 ;c3=0 ;c4=0 ;c5=0 ;c6=0 ;c7=0 ;c8=0 ;c9=0 # c1, ..., c9 sont des compteurs tous initialisés à 0. for k in range(1,nMax+1) : if (aboutitPointFixe(k)) : # si on aboutit à un point fixe s, if(s==1) : # si s vaut 1, c1=c1+1 # on incrémente le compteur c1. print(“{}_est_le_{}e_nombre_qui_aboutisse_au_point_fixe_{}.”.format(k,c1,s)) if(s==153) : # si s vaut 153, c2=c2+1 # on incrémente le compteur c2. print(“{}_est_le_{}e_nombre_qui_aboutisse_au_point_fixe_{}.”.format(k,c2,s)) if(s==370) : # si s vaut 370, c3=c3+1 # on incrémente le compteur c3. print(“{}_est_le_{}e_nombre_qui_aboutisse_au_point_fixe_{}.”.format(k,c3,s)) if(s==371) : # si s vaut 371, c4=c4+1 # on incrémente le compteur c4. print(“{}_est_le_{}e_nombre_qui_aboutisse_au_point_fixe_{}.”.format(k,c4,s)) if(s==407) : # si s vaut 407, c5=c5+1 # on incrémente le compteur c5. print(“{}_est_le_{}e_nombre_qui_aboutisse_au_point_fixe_{}.”.format(k,c5,s)) if(aboutitCycle2(k)) : # si on aboutit à un cycle d’ordre 2 if(s==136 or s==244) : # si le cycle est (136, 244), c6=c6+1 # on incrémente le compteur c6. print(“{}_est_le_{}e_nombre_qui_aboutisse_au_cycle_d’ordre 2_de_{}.”.format(k,c6,s)) if(s==919 or s==1459) : # si le cycle est (919, 1459), c7=c7+1 # on incrémente le compteur c7. print(“{}_est_le_{}e_nombre_qui_aboutisse_au_cycle_d’ordre 2_de_{}.”.format(k,c7,s)) if(aboutitCycle3(k)) : # si on aboutit à un cycle d’ordre 3 if(s==55 or s==250 or s==133) : # si le cycle est (55, 250, 133), c8=c8+1 # on incrémente le compteur c8. print(“{}_est_le_{}e_nombre_qui_aboutisse_au_cycle_d’ordre 3_de_{}.”.format(k,c8,s)) if(s==160 or s==217 or s==352) : # si le cycle est (160, 217, 352), c9=c9+1 # on incrémente le compteur c9. print(“{} est le {}e nombre qui aboutisse au cycle d’ordre 3 de {}.”.format(k,c9,s)) print(“On_obtient_{}_fois_1,_{}_fois_153,_{}_fois_370,_{}_fois_371,_{}_fois_407,_{}_cycle_2_de_136,_{}_cycle 2_de_919,_{}_cycle_3_de_55,_{}_cycle_3_de_160.”. format(c1,c2,c3,c4,c5,c6,c7,c8,c9)) |
En faisant tourner ces différents codes, on peut faire le bilan statistique suivant :
|
\(nMax=1\,000\) |
\(nMax=10\,000\) |
\(nMax=50\,000\) |
Point fixe \(1\) |
\(10\) |
\(101\) |
\(539\) |
Point fixe \(153\) |
\(333\) |
\(3\,333\) |
\(16\,666\) |
Point fixe \(370\) |
\(174\) |
\(1\,1776\) |
\(8\,768\) |
Point fixe \(371\) |
\(303\) |
\(2\,937\) |
\(14\,780\) |
Point fixe \(407\) |
\(30\) |
\(396\) |
\(1\,887\) |
Cycle d’ordre \(2\) : \((919,\ {1459})\) |
\(24\) |
\(341\) |
\(1\,618\) |
Cycle d’ordre \(2\) : \((136,\ 244)\) |
\(9\) |
\(160\) |
\(944\) |
Cycle d’ordre \(3\) : \((55,\ 250, 133)\) |
\(66\) |
\(518\) |
\(2\,666\) |
Cycle d’ordre \(3\) : \((160,\ 217, 352)\) |
\(51\) |
\(438\) |
\(2\,132\) |
Point fixe : total |
\(850\) |
\(8\,543\) |
\(42\,640\) |
Cycle : total |
\(150\) |
\(1\,457\) |
\(7\,360\) |
Trois constatations :
-
Environ \(85\) % des nombres aboutissent à un point fixe.
-
Le point fixe \(153\) obtient la palme avec, ce qui est remarquable, exactement \({33,33}\) % des suffrages ! Il y a sans doute une bonne raison à cela. Laquelle ?
-
Le point fixe \(371\) semble apparaître environ deux fois plus que le point fixe \(370\). En fait le quotient des apparitions semble se stabiliser autour de \(60\) %, \(61\) %… À vérifier.
Remarquons que \(153\) est un nombre remarquable à plus d’un égard :
-
C’est un nombre de Friedman1 : \(153=3\times51\).
-
Il est égal à la somme de factorielles successives : \(153=1\, !+2\, !+3\, !+4\, !+5\, !\).
-
C’est le dix-septième nombre triangulaire : \(153=\dfrac{\mathstrut17\times18}{\mathstrut2}\), donc le neuvième nombre hexagonal : \(153=9\times(2\times9-1)\) ; c’est donc également un nombre de Stirling2 de première espèce non signé et un nombre de Stirling de seconde espèce.
-
C’est un nombre chiffrement parfait pour la fonction chiffrée \(F\) dont le motif est \(f(d)=d^3\) : \(153=1^3+5^3+3^3\).
-
C’est enfin un nombre mystique : en particulier les apôtres ont péché \(153\) poissons du lac de Tibériade et \(153\) saints ressusciteront après la fin du monde.
Quelques résultats en vrac sur les transformations agréables \(S_k\)
On démontre que la transformation \(S_k\) n’a pas de points fixes de plus de \(k+1\) chiffres, ni de cycles formés de tels nombres3. Au cours des itérations, les «trajectoires» ont au plus un nombre fini d’éléments supérieurs à \(10^{k+1}\). Il suffit donc de considérer celles des entiers de \(\big[0;10^{k+1}\big[\) pour trouver tous les attracteurs (points fixes ou cycles d’ordre fini) de la transformation \(S_k\). Toutes les transformations \(S_k\) sont convergentes vers un attracteur. Les attracteurs sont en nombre fini. Une telle transformation est dite agréable.
Nombres narcissiques
© Jean-Jacques Milan
Suivant les auteurs, l’expression «nombre narcissique» recouvre des sens différents. De manière très générale, un nombre narcissique est un entier naturel dont la valeur peut être calculée à partir de ses chiffres.
Ici, nous nous intéressons aux nombres d’Armstrong plus que parfaits ou PPDI.
Un nombre d’Armstrong plus que parfait ou PPDI (Pluperfect Digital Invariant) est un entier de \(n\) chiffres égal à la somme des puissances \(n\)-ièmes de ses chiffres. |
Nous en connaissons déjà un d’ordre \(1\) : \(1=1^1\) et quatre d’ordre \(3\) :
\(153=1^3+5^3+3^3\), \(370=3^3+7^3+0^3\),
\(371=3^3+7^3+1^3\) et \(407=4^3+0^3+7^3\).
Tous les nombres à un chiffre sont des PPDI. Curieusement, il n’y en a pas d’ordre \(2\).
D’ordre \(4\), il y en a trois : \({1\,634}=1^4+6^4+3^4+4^4\), \({8\,208}=8^4+2^4+0^4+8^4\) et \({9474}=9^4+4^4+7^4+4^4\).
D’ordre \(5\), on en connaît également trois : \({54\,748}=5^5+4^5+7^5+4^5+8^5\),
\({92\,727}=9^5+2^5+7^5+2^5+7^5\)
et \({93\,084}=9^5+3^5+0^5+8^5+4^5\). Etc.
En tout, on a comptabilisé \(89\) nombres d’Armstrong plus que parfaits, \(0\) étant le plus petit et le plus grand étant d’ordre \(39\), et qui vaut
\[{115\,132\,219\,018\,763\,992\,565\,095\,597\,973\,971\,522\,401}=\\
1^{39}+1^{39}+5^{39}+1^{39}+3^{39}+2^{39}+2^{39}\\
+1^{39}+9^{39}+0^{39}+1^{39}+8^{39}+7^{39}+6^{39}+3^{39}\\
+9^{39}+9^{39}+2^{39}+5^{39}+6^{39}+5^{39}+0^{39}+9^{39}\\
+5^{39}+5^{39}+9^{39}+7^{39}+9^{39}+7^{39}+3^{39}+9^{39}\\
+7^{39}+1^{39}+5^{39}+2^{39}+2^{39}+4^{39}+0^{39}+1^{39}\]
Vous en avez deviné un autre d’ordre \(39\). Question superbanco à \({1\,000}\) € : lequel ?
La suite de l’article, concernant les nombres parfaits, amiables ou aliquotes, vous attend ici. Vous y trouverez également la version .py des scripts pour les essayer. |
⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅♦⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅
André-Jean Glière est professeur de mathématiques en classe préparatoire à l’ÉSÉO (École Supérieure d’Électronique de l’Ouest) à Angers.
-
Un nombre de Friedman ou autodigital est un nombre entier obtenu en combinant tous ses chiffres à l’aide des quatre opérations et de l’élévation à la puissance.↩
-
Les nombres de Stirling de première espèce non signés sont les coefficients du polynôme de la factorielle croissante
\(x(x+1)(x+2)\dots(x+n-1)\) ; pour une définition des nombres de Stirling de seconde espèce, voir Wikipedia ↩
-
Pour plus de détails, voir le site Sayrac de René-Louis Clerc .↩
2 réflexions sur « De surprenantes arithmétiques (II) »
Les commentaires sont fermés.