1 Chapitre Chapitre 1. Autour des diviseurs d’un entier Au début de l’arithmétique, il est fréquent que l’on cherche à déterminer la liste des diviseurs d’un entier naturel donné, ainsi que leur nombre et éventuellement leur somme. Si le calcul peut être fait à la main pour de petits entiers, il devient très vite fastidieux. Ainsi par exemple, il est immédiat d’établir que la liste des diviseurs de 12 est {1, 2, 3, 4, 6, 12}, leur nombre est de 6 et leur somme vaut 28… mais on ne se risquerait pas à faire les mêmes calculs à la main avec un entier comme 151 611. Notre calculatrice peut donc nous apporter une aide appréciable. C’est aussi l’occasion pour nous d’aborder pour la première fois des fonctions arithmétiques importantes. Nous terminerons par l’étude des nombres entiers hautement composés. Sommaire Chapitre 1. Autour des diviseurs d’un entier .......................................................... 1 1. Du tableur… .................................................................................................. 2 1.1 Une feuille de calcul pour répondre à nos questions… ............... 2 1.2 2. 3. Une première amélioration de l’algorithme… ................................ 3 …vers l’écriture de fonctions ...................................................................... 5 2.1 Liste des diviseurs d’un entier ......................................................... 5 2.2 Nombre de diviseurs d’un entier ..................................................... 6 2.3 Somme des diviseurs d’un entier .................................................... 6 Une application : les entiers hautement composés .............................. 11 3.1 Que sont ces entiers ? .................................................................... 11 3.2 Une première recherche, graphique ............................................. 12 3.3 Écriture d’une fonction .................................................................... 13 3.4 Premiers résultats ............................................................................ 13 3.5 Plus loin avec la décomposition en facteurs premiers............... 15 3.6 Une fonction plus performante ...................................................... 19 3.7 Calculer les 100 premiers hautement composés ? .................... 20 Christian Vassard (IUFM Rouen) 2 Mathématiques et TI-Nspire 1. Du tableur… 1.1 Une feuille de calcul pour répondre à nos questions… La première approche possible, sans aucun doute la plus simple, la plus facile à mettre en œuvre, passe par l’établissement d’une feuille de calcul avec l’avantage pédagogique de pouvoir observer ce qui se passe. Dans la cellule A1, on met la valeur de l’entier n que l’on considère, par exemple 20 pour commencer, valeur que l’on stocke dans une variable n. Les diviseurs potentiels sont à rechercher parmi les entiers de 1 à n. Générons la liste de ces entiers dans la deuxième colonne en saisissant dans la zone grisée : =seq(k,k,1,n) Si l’on modifie la valeur de n, on peut constater que la deuxième colonne est ajustée à cette nouvelle valeur (…avantage très net sur les tableurs classiques…). Il reste à tester chacun de ces nombres, pour savoir s’il divise n. C’est ce que l’on fait en entrant dans la cellule C11 : =when(mod(n,b1)=0,b1,void,void) Si B1 divise n, c’est bien lui, le diviseur trouvé, qu’on veut voir figurer ; sinon, on affiche void, c’està-dire une valeur vide, qui sera matérialisée par un tiret (dit underscore ou caractère de soulignement) dans la cellule correspondante2. Cette formule est recopiée sur un grand nombre de lignes (100 sur la calculatrice, 500 pour un ordinateur). On peut nommer dd la liste des diviseurs. Quelques perfectionnements sont possibles à partir du modèle de base que l’on vient d’obtenir. Par exemple, il est possible de faire disparaître les valeurs void de la liste dd en saisissant dans la zone grisée de la colonne D : =delvoid(dd) Rappelons que le logiciel et la calculatrice TI-Nspire sont insensibles à la casse. Il est donc équivalent de saisir A1 ou a1, cette dernière façon de faire étant un peu plus rapide, notamment sur la calculatrice. 1 when permet en effet de gérer trois éventualités selon la syntaxe when(condition, résultat si vrai [, résultat si faux][, résultat si inconnu]). Il est prudent ici d’afficher void quand on ne sait pas si le test est vrai ou faux. 2 © T³ France 2011 / Photocopie autorisée Autour des diviseurs d’un entier 3 Nommons cette dernière colonne div. Voilà obtenue très simplement la liste des diviseurs de n. Il est ensuite facile d’afficher la somme des diviseurs de n dans F1 (=sum(div)))et leur nombre dans F2 (=dim(div)). Les intitulés de cellule voisins sont saisis entre guillemets, comme des chaines de caractères. On obtient la feuille de calcul de la page précédente, mais qui ne peut être utilisée que pour les entiers compris entre 1 et 100 sur la calculatrice, ou 1 et 500 sur un ordinateur3. Enfin, last but not least, défaisons-nous de nos réflexes « tableur classique » en utilisant seq y compris dans la colonne C et nous n’aurons plus rien à recopier vers le bas puisque tout s’ajustera simplement4 en changeant la valeur de n. C’est ce que propose la feuille de calcul suivante : 1.2 Une première amélioration de l’algorithme… La feuille précédente s’appuie sur un algorithme maladroit pour déterminer les diviseurs : ainsi pour un nombre comme 1 000, elle passe en revue tous les entiers compris entre 1 et 1 000… ce qui est long et inutile… … car on sait bien que les diviseurs peuvent être récupérés deux par deux. Voilà de quoi accroitre très facilement les performances de notre algorithme ! Un exemple vaudra mieux qu’un long discours : prenons le cas de 24. Avec le 1, on récupère aussi 24 = 24, avec 2, 24 = 12, avec 3, 24 = 8, et avec 4, 24 = 6… et c’est tout. Autrement dit, en quatre 1 2 3 4 itérations, au lieu des 24 de la feuille précédente, on a tous les diviseurs. Plus généralement, lorsque l’on écrit n sous la forme du produit i × j de deux entiers, nécessairement un des entiers, i par exemple, est inférieur ou égal à n, tandis que l’autre j = n est supérieur ou égal. i L’idée est donc de parcourir tous les entiers de 1 à n : on récupère tous les diviseurs i inférieurs ou égaux à n et d’une pierre deux coups, les diviseurs n supérieurs ou égaux à n. Aucun des diviseurs i n’a été oublié par ce procédé. 3 C’est-à-dire le nombre de fois où on a recopié la formule vers le bas. 4 Cette façon de faire est très efficace et très propre © T³ France 2011 / Photocopie autorisée ! 4 Mathématiques et TI-Nspire Mais un même diviseur peut-il apparaître deux fois ? En d’autres termes, existe-t-il un entier i tel que i = n ? Ce n’est pas tant gênant dans l’établissement de la liste des diviseurs, que dans le calcul de leur i nombre ou de leur somme, calcul qui serait alors faussé. Or il est clair que i = n équivaut à n = i2, c’est-à-dire que n est un carré parfait et que le diviseur i n’est i autre que la racine de n (par exemple avec n = 25, i = 5, on a bien n = 5 aussi…). C’est un cas qu’il i faut donc prévoir dans la feuille de calcul. D’abord, dans la colonne B, on balaie les entiers de 1 à n … le gain en place est énorme par rapport à l’approche précédente et l’on pourra traiter des nombres beaucoup plus grands ! Remarquons que même lorsque n n’est pas un entier, l’instruction seq fonctionne… Dans la colonne C, nommée divinf, on utilise le même test que dans la première feuille de calcul. Dans la colonne D, nommée divsup, on récupère le cas échéant le diviseur n , à condition qu’il soit i différent de i : voir la formule saisie tout en bas de la feuille ci-dessous. Les formules des colonnes C et D sont recopiées comme précédemment sur 100 lignes à la calculatrice, ou 500 voire plus sur l’ordinateur. Enfin dans E, on récupère la liste des diviseurs –attention la liste n’est pas ordonnée– en concaténant les deux listes divinf et divsup, débarassées de leurs void inutiles. L’instruction est : augment(delvoid(divinf),delvoid(divsup)). Ultimes améliorations avec une utilisation massive comme précédemment de seq et des colonnes qui s’ajustent toutes seules. Remarquons qu’il est possible d’ordonner la liste divsup avec la fonction sort_asc5 de la bibliothèque Numtheory. D’où l’instruction qui figure dans la zone grisée de la colonne E : augment(delvoid(divinf),numtheory\sort_asc(delvoid(divsup))) 5 Les instructions de tri de liste sortA, ou sortD, ne peuvent pas être utilisées dans une feuille de calcul. © T³ France 2011 / Photocopie autorisée Autour des diviseurs d’un entier 5 2. …vers l’écriture de fonctions Ou plus précisément d’une fonction, reprenant les remarques précédentes. Si intéressant que soit le tableur – il nous permet de cerner le problème et d’apporter une première réponse – il reste limité dans son utilisation à 2 500 lignes et donc à des entiers d’assez petite taille. 2.1 Liste des diviseurs d’un entier Écrivons d’abord une fonction – nommons-la ldiv – listant les diviseurs d’un entier n. L’entier n est maintenant un paramètre d’entrée de ldiv. La fonction est constituée essentiellement d’une boucle For : c’est celle que l’on emploie dès que l’on sait à l’avance combien de fois elle sera appelée. On peut visualiser les différentes étapes de cette boucle sur chacune des lignes de la feuille de calcul précédente. On cumule dans la liste divinf tous les diviseurs i inférieurs à n et dans la liste divsup tous les diviseurs n/i supérieurs à n. Les premiers sont ajoutés à droite et les seconds à gauche pour être dans l’ordre croissant au moment où on concaténera les deux listes. © T³ France 2011 / Photocopie autorisée 6 Mathématiques et TI-Nspire Enfin si n est un carré parfait, pour éviter le doublon n dans la liste des diviseurs, on ne renvoie de la deuxième liste que les éléments à partir du deuxième : c’est l’objet de l’instruction mid mid(divsup,2) qui renvoie tous les éléments de la liste divsup à partir de la position 2. Ci-contre, quelques-uns des résultats obtenus, le dernier en une trentaine de secondes6. 2.2 Nombre de diviseurs d’un entier Le nombre des diviseurs d’un entier est une des plus simples fonctions arithmétiques que l’on peut définir. On peut facilement calculer ce nombre à l’aide de la fonction ndiv… qui n’est qu’une adaptation du programme précédent7. On obtient les résultats suivants : 2.3 Somme des diviseurs d’un entier Une des plus célèbres fonctions arithmétiques – sans doute la plus étudiée dans l’histoire – est la fonction somme des diviseurs d’un entier n, notée habituellement n . La fonction divisors de la bibliothèque numtheory est encore plus rapide : on y accède par le catalogue. Tout ceci ne dispense en aucune façon de l’intérêt qu’il y a à écrire sa propre fonction… 6 dim(ldiv(n)) remplirait le même office, en demandant toutefois un tout petit plus de temps. Pour avoir le nombre des diviseurs, il n’est pas nécessaire de les stocker tous au préalable. Dans un souci d’efficacité et de performance, nous préférons donc réécrire une nouvelle fonction. 7 © T³ France 2011 / Photocopie autorisée Autour des diviseurs d’un entier 7 C’est ce que calcule la fonction sdiv1 suivante… en adaptant une fois de plus notre programme listant les diviseurs. Au lieu cette fois de mémoriser les diviseurs dans une liste, on les cumule dans une variable s. Il faut juste penser, comme on l’a vu plus haut, à retirer n à la fin dans le cas où n est un carré parfait, car le diviseur n dans ce cas a été compté deux fois dans la somme. On obtient les résultats suivants : On peut remarquer que, même avec des valeurs assez grandes de l’entier, on obtient un résultat dans un temps raisonnable. Ceci étant, des entiers plus grands, disons au-delà d’une dizaine de chiffres, sont bien souvent inaccessibles à cette fonction. Une autre approche est possible, mais une étude mathématique de la fonction somme des diviseurs s’impose. Parenthèse mathématique sur la fonction somme des diviseurs Commençons d’abord par calculer la somme des diviseurs de quelques types d’entiers particuliers. Tout d’abord, il est évident que (p) = p + 1 si et seulement si p est un nombre premier. Si p est premier et k est un entier naturel, alors : k+1 (pk) = 1 + p + p2 + ... + pk = p – 1 p–1 Enfin, si p et q sont deux nombres premiers distincts, alors : (pq) = 1 + p + q + pq = (1 + p)(1 + q) = (p)(q) (p2q) = 1 + q + p + pq + p2 + p2q = (1 + p + p2)(1 + q) = (p2)(q) (p2q2) = 1 + q + q2 + p + pq + pq2 + p2 + p2q + p2q2 = (1 + p + p2)(1 + q + q2) = (p2) (q2) © T³ France 2011 / Photocopie autorisée 8 Mathématiques et TI-Nspire Ces résultats se généralisent et on peut énoncer le théorème suivant, qui exprime que la fonction somme des diviseurs est une fonction multiplicative8. Théorème Si a et b sont premiers entre eux, alors (ab) = (a)(b). Démonstration : Raisonnons à partir des décompositions en facteurs premiers. Posons : a p11 p22 ... prr b q11 q2 2 ... qs s où les facteurs pi et qj sont des nombres premiers distincts deux à deux, puisque a et b sont premiers entre eux. Par suite, les diviseurs du produit ab s’obtiennent de façon unique comme produit d’un diviseur de a par un diviseur de b ; en d’autres termes, il y a une correspondance bijective entre l’ensemble des diviseurs du produit ab et l’ensemble des produits d’un diviseur de a par un diviseur de b. Par conséquent, quand on développe le produit de (a) par (b), tous les termes s’obtiennent en multipliant entre eux un diviseur de a par un diviseur de b : chaque terme est alors un diviseur de ab. D’après la bijection précédente, on est sûr dans la somme de rencontrer une fois et une seule chaque diviseur de ab. Autrement dit, la somme calculée est bien (ab). En conséquence, la décomposition en facteurs premiers9 d’un entier n permet le calcul effectif de (n), sans passer par la liste des diviseurs. En effet, si n = p11 p22 ... pss , avec les notations habituelles où les pi sont des nombres premiers, le théorème précédent donne : n ( p1 ) ( p2 ) ... ( ps ) 1 s 2 p s 1 1 p11 1 1 p2 2 1 1 ... s p1 1 p2 1 ps 1 Exemples L’application de la formule précédente donne les résultats suivants : (2n ) = 2n + 1 – 1 n+1 (10n) = (2n + 1 – 1) 5 –1 4 (2n × 5) = (2n + 1 – 1) × 6 (24 × 35 5) = 8 25 1 36 1 52 1 ... 67 704 . 2 1 3 1 5 1 Une fonction arithmétique multiplicative est une fonction f de * dans lui-même qui vérifie d’une part, f 1 1 et d’autre part, pour tous entiers naturels n et m premiers entre eux, f nm f n f m . C’est le cas de la fonction nombre de diviseurs et de la fonction somme des diviseurs. 9 En ayant conscience que si elle est facile à obtenir avec de petits nombres entiers, c’est une autre paire de manches avec des grands entiers ! © T³ France 2011 / Photocopie autorisée Autour des diviseurs d’un entier 9 Écriture d’un programme performant de calcul de la somme des diviseurs d’un entier Le théorème précédent est un résultat intéressant, pour peu que l’on puisse récupérer les facteurs premiers d’un entier et leurs exposants respectifs. Factor renvoie la factorisation complète… peut-on aller plus loin ? Oui, en transformant le résultat renvoyé en chaîne de caractères, comme le montre l’écran suivant : Remarquons que expr("2^4*3^5*5") évalue la chaîne de caractères et renvoie le résultat de départ, tout calculé… Il nous reste à savoir extraire de cette chaîne de caractères les éléments dont nous aurons besoin. Quelques instructions sont disponibles sur TI-Nspire pour nous aider à cette tâche : dim(chaine) donne le nombre de caractères d’une chaîne. instring(chaine,sous-chaine) renvoie la position de la première lettre de la première occurrence de sous-chaine dans chaine (0 en cas d’absence de sous-chaine). Un exemple vaut mieux qu’un long discours : left(chaine,n) renvoie, sous forme d’une chaîne de caractères, les n caractères les plus à gauche de chaine. Il existe de même une fonction right, qui obéit à la même syntaxe10. La fonction mid, déjà rencontrée page 6, permet d’extraire des caractères à partir d’une position donnée. Nous ne nous en servirons pas ici. 10 © T³ France 2011 / Photocopie autorisée 10 Mathématiques et TI-Nspire Enfin, l’opérateur & permet de concaténer des chaînes de caractères. Nous sommes maintenant en mesure d’écrire le programme permettant le calcul de la somme des diviseurs d’un entier à partir de sa décomposition en facteurs premiers. L’idée est de « découper en tranches » une chaîne de caractères… Car c’est bien à cela que se résume le programme : découper en tranches pour pouvoir appliquer une formule ! On part de string(factor(n)), auquel on prend soin d’adjoindre le symbole "*" à la fin… pour être sûr qu’il y figure au moins une fois (ce n’est pas toujours le cas, par exemple pour un nombre premier !). On commence alors à « saucissonner »… En gros, on découpe une « rondelle » à chaque fois que l’on rencontre un caractère "*"… Le premier caractère "*" nous donne la première tranche, avec un facteur de type "p^a", éventuellement "p" tout seul ; la partie au-delà de cette tranche est conservée pour la suite… On recherche ensuite dans la partie gauche la présence ou non du caractère "^". Si oui, on récupère à gauche le facteur premier, à droite l’exposant ; sinon on a directement le facteur premier avec un exposant égal à 1. Et on coupe la rondelle qui suit, jusqu’au premier caractère "*" du « bout » qui reste… en poursuivant l’analogie charcutière. On s’arrête bien sûr quand la chaîne se réduit au dernier caractère *, donc quand sa dimension est égale à 1. Voilà pour la boucle While. Le code est le suivant11 : L’efficacité de cette nouvelle fonction, liée avant tout à celle de Factor, est redoutable : la plupart des réponses renvoyées ci-après sont données immédiatement. Malheureusement, on sait que, pour des nombres très grands, la factorisation va demander beaucoup de temps, trop de temps bien souvent pour qu’on puisse attendre le résultat. On atteint ici les limites de notre fonction sdiv. 11 Deux précautions sont prises au début : renvoyer 1, au lieu d’un message d’erreur, lorsque n vaut 1 ; tester le type de la variable (impérativement type numérique, sinon le programme plante la calculatrice…) © T³ France 2011 / Photocopie autorisée Autour des diviseurs d’un entier 11 Mais c’est de loin la fonction la plus performante que nous ayons écrite : si nécessaire, nous pourrions par exemple l’enregistrer dans une bibliothèque publique pour en disposer depuis n’importe quel répertoire. Si l’on veut faire très vite – oral de concours ou travail en temps limité – on peut se servir de la bibliothèque Numtheory et de la fonction divisors qui renvoie la liste des diviseurs d’un entier : facile alors d’en faire la somme ! Toutefois, pour des entiers possédant beaucoup de diviseurs, un message d’erreur peut être renvoyé, dû à la gestion d’une liste possédant trop de termes. 3. Une application : les entiers hautement composés 3.1 Que sont ces entiers ? Ils ont été introduits dans un long article rédigé en 1915 par le célèbre mathématicien indien Srinivasa Ramanujan, qui établit dans ce même article, la liste des 103 premiers. Définition Un entier naturel strictement supérieur à 1 est dit hautement composé lorsqu’il possède strictement plus de diviseurs que n’importe quel entier qui le précède. Ces entiers possèdent donc en quelque sorte le record du nombre de diviseurs. On peut considérer ces nombres comme l’exact contre-pied des nombres premiers : ceux-ci ont un minimum de diviseurs et ceux-là en ont un maximum. Les premiers nombres hautement composés se déterminent facilement à la main : 2, d’abord avec 2 diviseurs ; puis 4 avec 3 diviseurs ; puis 6, avec 4 diviseurs ; etc. Mais une telle recherche devient vite fastidieuse12… 12 On ne peut que mesurer à sa juste valeur la performance de Ramanujan qui en donne 103. © T³ France 2011 / Photocopie autorisée 12 Mathématiques et TI-Nspire 3.2 Une première recherche, graphique Cherchons les nombres hautement composés inférieurs ou égaux à 100, en employant pour commencer une méthode graphique. Le tableur permet facilement d’avoir en colonne A la liste des entiers compris entre 2 et 100, nommée xx, et en colonne B la liste du nombre de leurs diviseurs, calculée avec ndiv, nommée yy. Il reste à représenter graphiquement le nuage de points d’abscisse xx et d’ordonnée yy. On remarquera le point mobile rouge, astreint à se déplacer sur la grille, qui permet de lire les maxima de la courbe précédente. En conclusion, les nombres hautement composés inférieurs ou égaux à 100 sont : 2, 4, 6, 12, 24, 36, 48 et 60. Ces nombres semblent bien rares, beaucoup plus en tout cas que leurs antagonistes, les nombres premiers13. Certains, comme 24 et 60, sont un peu plus célèbres que d’autres : les 24 heures du jour ou le système de numération en base 60 des Babyloniens ont probablement été choisis précisément pour leur grand nombre de diviseurs. Il se trouve qu’ils sont hautement composés… 13 Il y en a 25 qui sont inférieurs ou égaux à 100. © T³ France 2011 / Photocopie autorisée Autour des diviseurs d’un entier 13 3.3 Écriture d’une fonction Évidemment une recherche systématique, basée sur un balayage, peut être entreprise avec une fonction : L’idée est de parcourir tous les entiers de 2 à n en déterminant combien ils ont de diviseurs. À chaque étape, on compare le nombre des diviseurs de l’entier considéré avec le maximum de ce nombre de diviseurs mémorisé dans une variable l. Si un entier a un nombre de diviseurs qui dépasse strictement le maximum l en cours, c’est qu’il est hautement composé : on le mémorise alors dans la liste list et on met à jour le nouveau maximum dans l. On obtient les résultats suivants, le dernier au bout d’un temps non négligeable : 3.4 Premiers résultats Examinons la liste des nombres hautement composés obtenue précédemment. Comme pour les nombres premiers, la répartition des nombres hautement composés semble relativement imprévisible. À quoi ressemblent ces nombres ? Qu’est-ce qui peut permettre de les reconnaître ? D’autre part, on observe qu’ils sont relativement rares, plus que les nombres premiers… Mais y-en-at-il aussi une infinité ? © T³ France 2011 / Photocopie autorisée 14 Mathématiques et TI-Nspire Ce dernier point peut-être démontré très facilement. Théorème L’ensemble des nombres hautement composés est infini. Démonstration Soit k un entier quelconque. L’ensemble des entiers naturels possédant k diviseurs est non vide : il contient par exemple 2k–1. Ce sous-ensemble de possède donc un plus petit élément, qui par définition est un nombre hautement composé. On établit donc une bijection entre l’ensemble des entiers naturels et l’ensemble des entiers hautement composés, ce qui prouve qu’il y a une infinité non dénombrable d’entiers hautement composés. Une autre approche qui mérite d’être signalée, est possible pour cette démonstration. Soit n un entier hautement composé. Montrons que l’on peut toujours construire un entier hautement composé strictement plus grand que n. Or considérons l’entier 2n : on sait qu’il possède strictement plus de diviseurs que n. Il est immédiat de voir que l’ensemble des diviseurs de n est strictement inclus dans l’ensemble des diviseurs de 2n. De deux choses l’une. Ou bien 2n est hautement composé et nous pouvons conclure. Ou bien 2n n’est pas hautement composé, ce qui veut dire qu’il existe au moins un entier strictement compris entre n et 2n et possédant autant ou plus de diviseurs que 2n. Le plus petit de ces entiers est par définition hautement composé. Ceci prouve le résultat. Notons que, si n est un entier hautement composé, l’entier hautement composé qui le suit est strictement supérieur à n et inférieur ou égal à 2n. En d’autres termes le quotient entre deux entiers hautement composés consécutifs14 est dans l’intervalle 1; 2 . Dans la liste établie précédemment, on remarque que 2 et 4 sont des entiers hautement composés mais on n’observe aucune autre puissance de 2. On peut prouver que c’est bien le cas : la démonstration qui suit est par ailleurs typique de celle qu’on peut rencontrer à propos des nombres hautement composés. Théorème Aucune puissance de 2, hormis 2 et 4, ne peut être un entier hautement composé. Démonstration On sait que 2 et 4 sont des entiers hautement composés. Soit donc maintenant N 21 un entier quelconque avec 1 3 , entier qui possède donc 1 1 diviseurs. 3N 3 21 2 , clairement entier et strictement inférieur à N. Il 4 possède quant à lui 2 1 1 21 2 diviseurs. Considérons alors le nombre N ' Il est clair que 21 2 1 1 puisque cela équivaut à 1 3 . Bref, N’, strictement inférieur à N, possède au moins autant de diviseurs que N. Il est donc exclu que N lui-même soit un nombre hautement composé. 14 Le plus grand au numérateur. © T³ France 2011 / Photocopie autorisée Autour des diviseurs d’un entier 15 3.5 Plus loin avec la décomposition en facteurs premiers Pour mieux voir à quoi ressemblent ces nombres, cherchons à les factoriser. Dans une nouvelle page Tableur & Listes, on sauvegarde la dernière liste obtenue avec la fonction hautcomp(20000) dans une variable l et on la copie dans la colonne A, puis on la factorise dans la colonne B. Dans la colonne C est rappelé le nombre de diviseurs du nombre hautement composé correspondant. Quelques remarques peuvent alors être faites sur les nombres hautement composés. Tout d’abord sur les facteurs premiers qui interviennent dans les décompositions, 2, puis 2 et 3, puis 2,3 et 5, puis 2, 3, 5 et 7 etc. : chaque nombre premier depuis 2 est utilisé, sans saut. Par exemple, on ne rencontre pas 24 32 7 , d’où le 5 aurait été omis. D’autre part, dans chaque décomposition, les exposants de ces nombres premiers – toujours en partant de 2 – sont décroissants, jusqu’à la valeur 1 incluse, sauf pour 4 et 36 qui se terminent l’un et l’autre par un exposant 2. Ainsi 5040 24 32 5 7 donnent des exposants 4, 2, 1 et 1, conformes à nos prévisions. À bien y regarder, une partie de ces remarques s’explique très simplement. Étudions un exemple mais le raisonnement général s’appuierait sur les mêmes arguments. Un nombre comme 3 × 53 × 72 possède (1 + 1) × (3 + 1) × (2 + 1) = 24 diviseurs. Mais le nombre 2 × 33 × 52 est clairement plus petit (chacun des facteurs premiers est remplacé par un plus petit) et possède le même nombre de diviseurs puisque les exposants des facteurs premiers n’ont pas changé. Ceci explique pourquoi les nombres premiers apparaissent dans l’ordre depuis 2, sans en omettre aucun. Mais on peut encore diminuer le nombre en conservant les mêmes exposants mais en les mettant dans l’ordre décroissant, les plus grands réservés aux plus petits facteurs premiers. On arrive à : 23 × 32 × 5… plus petit encore que 2 × 33 × 52. Il se trouve que ce dernier entier est bien un nombre hautement composé… à savoir 360… Cela n’est pas pour autant obligatoire. Les considérations précédentes nous autorisent à énoncer le résultat suivant. © T³ France 2011 / Photocopie autorisée 16 Mathématiques et TI-Nspire Théorème Si un nombre N est hautement composé, il s’écrit sous la forme : N p11 p22 ... pnn . où la suite 1 , 2 ,..., n est une suite d’entiers naturels décroissante et où pi désigne le ie nombre premier (p1 = 2, p2 = 3, etc.) On peut même apporter une précision : le dernier exposant, sauf pour 4 et 36, est nécessairement 1, ce qui fait l’objet de la démonstration suivante. Théorème Hormis pour 4 et 36, le dernier exposant de la décomposition en facteurs premiers d’un entier hautement composé est toujours 1. Démonstration Tout en se basant sur des principes analogues à ceux qu’on a déjà vus, la démonstration est cependant plus technique que les précédentes15. Soit N un entier hautement composé. Si N possède un ou deux facteurs premiers, l’étude précédente permet de conclure. Supposons donc que N possède au moins 3 facteurs premiers. Écrivons avec les hypothèses habituelles : N p11 p22 ... phh ... pk k ... pnn . Nous avons particularisé deux nombres premiers de cette décomposition, notés ph et pk avec h < k, vérifiant d’une part ph 2 pk et d’autre part ph pk pn1 , où pn+1 désigne le premier nombre premier qui n’apparaît pas dans la décomposition en facteur premier de N. Remarquons que ces deux conditions sont toujours réalisables, ne serait-ce qu’avec p1 = 2 et pn. En effet, la première des conditions est alors immédiate puisque N possède au moins trois facteurs ; la seconde aussi car d’après le postulat de Bertrand, pn+1 est nécessairement compris entre pn et 2pn. Ces préliminaires étant remplis, on considère maintenant l’entier : p N ' n 1 N p11 p22 ... phh 1... pk k 1... pnn pn 1 . ph pk Comme ph pk pn1 , on a N’ < N. Mais N étant hautement composé par hypothèse, le nombre de diviseurs de N’ est strictement inférieur au nombre de diviseurs de N ce qui se traduit par l’inégalité : 1 12 1...h ...k ...n 1 2 1 12 1...h 1...k 1...n 1 ce qui après simplification donne : 2 h k h 1 k 1 Comme précédemment, cette inégalité équivaut à : h 1k 1 1 . Plusieurs cas sont à envisager. 15 Je la dois à Oliver Bordellès, membre éminent de l’excellent forum du site les-mathematiques.net : http://www.les-mathematiques.net/phorum/read.php?5,606256,page=1 © T³ France 2011 / Photocopie autorisée Autour des diviseurs d’un entier 17 Si h 1 , on sait d’après la décroissance des indices que tous les i sont égaux à 1 pour i h . C’est bien le cas pour n . Si h 2 , l’inégalité équivaut alors à k 2 . Si k 1 , on conclut comme précédemment. Montrons que k ne peut pas être égal à 2. Sinon, N s’écrit N p11 p22 ... ph 2 ... pk 2 ... pnn et on considère alors l’entier 2 ph N p11 p2 2 ... ph 2 ph 2 ... pk1... pnn , qui encore une fois est strictement inférieur à N d’après pk nos hypothèses. N '' Par conséquent, le nombre de diviseurs de N '' est strictement inférieur au nombre de diviseurs de N, ce qui donne : 1 12 1... 3 3 ... 2 ... n 1 1 12 1... 3 ... 3 ... n 1 qui équivaut à 3 3 2 3 3 , ce qui est clairement impossible. Enfin si h 2 , l’inégalité n’est possible que lorsque k 1 , ce qui permet encore de conclure sur le dernier exposant. Bref, dans tous les cas, le théorème montre que dès qu’il y a au moins trois facteurs premiers distincts, le dernier exposant d’un nombre hautement composé est nécessairement 1. Si l’on examine bien la démonstration, elle donne des précisions sur le moment où l’exposant 1 apparaît. Considérons par exemple un nombre hautement composé dans lequel interviennent les facteurs p1 = 2, p2 = 3, p3 = 5, p4 = 7, p5 = 11, p6 = 13, p7 = 17, p8 = 19, p9 = 23, p10 = 29. Le nombre premier qui suit p10 est p11 = 31 : on a d’une part, p2 p5 33 31 p11 et d’autre part, p22 9 p5 11 . D’après la démonstration précédente, soit l’exposant de p2 = 2 est 1 (ainsi que tous ceux qui suivent) soit s’il est strictement supérieur à 1, c’est alors l’exposant de p5 = 11 qui est égal à 1 (ainsi que tous ceux qui suivent). Autrement dit, quand on travaille avec tous les nombres premiers de 2 à 29, les seuls exposants susceptibles d’être différents de 1 sont ceux de 2, 3, 5 et 7. Remarquons enfin qu’à cause de cet exposant 1 final, les seuls nombres hautement composés qui sont des carrés sont 4 et 36. De même une puissance de 2, à part 2 et 4, ne peut pas être un nombre hautement composé. Les nombres hautement composés, excepté 2 et 4, sont donc forcément des multiples de 616 car leur décomposition contiendra forcément le facteur 3. Évidemment, comme souvent en arithmétique, la réciproque du théorème est fausse : tout nombre de la forme précédente n’est pas forcément hautement composé. Ainsi 24 × 33 × 5 = 2 160 remplit parfaitement les conditions du théorème : utilisation des nombres premiers 2, 3, 5 ; suite décroissante d’exposants ; dernier exposant égal à 1. Mais, bien qu’il ait la bonne « tête », ce n’est pas un nombre hautement composé, d’après la liste que nous avons établie17. Par contre, à l’inverse, le théorème donne le moyen de reconnaître à coup sûr un nombre qui ne sera pas hautement composé, comme par exemple 5 × 7 × 113. 16 En conséquence, tous les nombres hautement composés au-delà de 6 sont abondants , car tous les multiples de 6, sauf 6, le sont (voir plus loin). La réciproque est fausse, comme nous le verrons plus loin. 17 Il a 40 diviseurs ; 1 680 est le nombre hautement composé qui possède 40 diviseurs… © T³ France 2011 / Photocopie autorisée 18 Mathématiques et TI-Nspire On constate dans la liste précédentes qu’il n’existe qu’un nombre fini d’entiers hautement composés qui s’écrivent sous la forme 21 32 , à savoir 6, 12, 24, 36 et 48. Sont-ce bien les seuls ? Théorème Les seuls entiers hautement composés de la forme 21 32 , où 1 et 2 sont des entiers naturels au moins égaux à 1, sont 6, 12, 24, 36 et 48. Démonstration Soit donc N un entier hautement composé de la forme N 21 32 , où 1 et 2 sont des entiers naturels au moins égaux à 1. On sait que N possède 1 1 2 1 diviseurs et que, d’après la décroissance des exposants, 1 2 . Comme on l’a déjà vu, on cherche à fabriquer un entier N’ strictement inférieur à N. Comme N est hautement composé, on est sûr que N’ possède strictement moins de diviseurs que N. Considérons l’entier N’ défini par : N' 5N 21 1 32 1 5 23 qui possède 21 2 diviseurs. On a donc : 21 2 1 1 2 1 1 2 1 2 1 1 2 1 2 1 1 12 1 2 1 1 2 1 1 Il reste à examiner les différentes possibilités. Si 1 1 , l’inégalité précédente est toujours vérifiée. Mais tenant compte du fait que 1 2 , on en déduit que 2 1 . On obtient alors N = 21 31 = 6, qui est bien un entier hautement composé. Si maintenant 1 2 , l’inégalité est vérifiée si et seulement si 2 2 . On obtient comme candidats possibles N = 22 32 = 36, qui est bien hautement composé, et N = 22 3 = 12, qui l’est aussi. Il reste le cas où 1 2 … mais alors 1 1 est strictement supérieur à 1 et on ne peut plus avoir l’inégalité demandée sauf si 2 1 . D’après la liste des premiers entiers hautement composés obtenue plus haut, on sait que 24 23 3 et 48 = 24 3 sont de ce type. Montrons qu’il n’y en a pas d’autres, c’est-à-dire montrons que tout entier naturel de la forme N 21 3 avec 1 5 ne peut pas être hautement composé. Supposons qu’il le soit. On sait que N possède 2 1 1 21 2 diviseurs. Comme précédemment 5N 21 4 3 5 est inférieur à l’entier hautement composé N et qu’il possède 24 4 1 3 41 12 diviseurs. on remarque que N ' Par conséquent, comme précédemment, on peut écrire que : 41 12 21 2 © T³ France 2011 / Photocopie autorisée Autour des diviseurs d’un entier 19 ce qui équivaut à 1 7 . Les seuls candidats possibles, en dehors de ceux qu’on a déjà signalé, sont donc : 26 3 192 , 25 3 96 … qui ne sont pas hautement composés d’après la recherche exhaustive menée dans ce chapitre. Donc tout entier naturel N 21 3 avec 1 5 ne peut pas être hautement composé. En conclusion, on a bien prouvé que les seuls entiers hautement composés de la forme 21 32 sont 6, 12, 24, 36 et 48. 3.6 Une fonction plus performante D’après l’étude précédente, si l’on exclut les entiers hautement composés 2 et 4 – qui sont des puissances de 2 – et 6, 12, 24, 36 et 48 – de la forme 21 32 –, tous les autres entiers hautement composés sont donc forcément des multiples de 2 3 5 30 … cette remarque permet de rendre plus performant notre programme de recherche des nombres hautement composés. Après avoir mis dans une liste les premiers nombres hautement composés (ceux qui ne sont pas multiples de 30), on fait une recherche des autres nombres hautement composés parmi les multiples de 3018. On obtient alors des résultats qui étaient inaccessibles avec notre fonction de recherche précédente. Quelques longues minutes sont quand même nécessaires pour le dernier résultat, même avec l’ordinateur : On ne peut que remarquer la relative rareté des entiers hautement composés : 37 seulement parmi les entiers de 1 à 1 000 000… surtout quand on la compare à la rareté des nombres premiers ! 18 On peut espérer obtenir une fonction globalement 30 fois plus performante que la première. Ce n’est pas rien ! © T³ France 2011 / Photocopie autorisée 20 Mathématiques et TI-Nspire Une propriété étonnante peut être relevée : il semble que les nombres hautement composés soient très souvent des voisins immédiats (à 1 près) de nombres premiers. La feuille de calcul suivante montre 72,9 % des 37 nombres hautement composés inférieurs à 1 000 000 (qu’on vient juste de calculer et qu’on peut sauvegarder dans une variable liste, qu’on insère dans la colonne A du tableur) sont dans ce cas. 3.7 Calculer les 100 premiers hautement composés ? C’est ce qu’a fait Ramanujan. Manifestement, la méthode précédente – avec un ordinateur – ne nous permettra pas d’aller beaucoup plus loin que ce que l’on a fait. Examinons quelques-uns des nombres de la liste des nombres hautement composés inférieurs à 1 000 000 que l’on a obtenu plus haut. Pour simplifier l’écriture, on peut se contenter d’écrire seulement les exposants dans une liste ordonnée. Ainsi {4,2,1,1,1,1} représente l’entier 24 32 5 7 1113 720 720 . 22e nombre : {6,2,1,1} 23e nombre : {4,2,2,1} 24e nombre : {3,2,1,1,1} 25e nombre : {4,4,1,1} 26e nombre : {5,2,2,1} 27e nombre : {4,2,1,1,1} 28e nombre : {3,3,1,1,1} 29e nombre : {5,2,1,1,1} 30e nombre : {4,3,1,1,1} 31e nombre : {6,2,1,1,1} 32e nombre : {4,2,2,1,1} 33e nombre : {5,3,1,1,1} 34e nombre : {4,4,1,1,1} © T³ France 2011 / Photocopie autorisée Autour des diviseurs d’un entier 21 35e nombre : {5,2,2,1,1} 36e nombre : {6,3,1,1,1} 37e nombre : {4,2,1,1,1,1} Nous ferons l’hypothèse19 que lorsqu’on passe d’un nombre hautement composé hm à celui qui suit hm+1, trois cas, et trois seulement, peuvent se produire20 : a) les plus grands facteurs premiers de deux nombres sont les mêmes ; b) le plus grand facteur premier de hm+1 est celui qui suit le plus grand facteur premier de hm ; c) le plus grand facteur premier de hm+1 est celui qui précède le plus grand facteur premier de hm. Plutôt que de procéder par balayage systématique, peu efficace et couteux en temps, nous nous proposons de calculer un nombre hautement composé hm+1 à partir de celui qui le précède hm : l’idée est de dresser une liste de candidats possibles, tenant compte de la forme d’un tel nombre, puis de sélectionner celui qui convient. Plaçons-nous pour commencer dans le cas a. Nous écrivons hm comme produit de deux entiers, l’un fixe que nous appellerons fm et l’autre variable que nous appellerons vm. Nous prendrons : n f m pi où pn est le plus grand facteur premier utilisé dans hm ; i 1 vm hm . fm Tant que l’on raisonne avec des facteurs premiers qui ne dépassent pas 29, on est sûr que la partie variable ne portera que sur les facteurs premiers 2, 3, 5, 721. Raisonnons sur un exemple pour clarifier la méthode. Si on considère le 30e nombre hautement composé22 correspondant à {4,3,1,1,1}, soit h30 24 33 5 7 11 , la partie fixe vaut f30 2 3 5 7 11 et la partie variable v30 23 32 50 70 . L’entier hautement composé qui suit, h31 26 32 5 7 11 , peut se décomposer en f31 2 3 5 7 11 et v31 2 3 5 7 . 5 0 0 Pour reconstituer h31 , qu’on ne connaît pas, à partir de h30 , les parties fixes étant identiques, il suffit de générer tous les v31 possibles, c’est-à-dire tous les 2i 3 j 5k 7l avec i j k l , par exemple en partant de i = 8, jusqu’à i = 023 : ce sont les candidats potentiels pour reconstituer v31 puis h31. Certains de ces candidats ne conviennent pas. 19 C’est bien le cas évidemment ! 20 Pour ceux qui ont la télé couleur, les couleurs employées renvoient à un exemple de chaque type. 21 Voir un résultat démontré plus haut. 22 Nous avons établi la liste des 37 premiers plus haut. 23 Ne pas en prendre trop évidemment. © T³ France 2011 / Photocopie autorisée 22 Mathématiques et TI-Nspire En effet, d’après l’étude que nous avons faite sur les nombres hautement composés, nous savons que h31 vérifie : h30 h31 2h30 soit f30v30 f31v31 2 f30v30 ; en d’autres termes, on doit avoir v30 v31 2v30 . On peut donc d’ores et déjà éliminer tous les nombres candidats qui ne vérifieraient pas ces inégalités. Plaçons-nous maintenant dans le cas b, où hm+1 utilise un facteur premier de plus que hm : si le plus grand utilisé dans hm est pn , le plus grand utilisé dans hm+1 est pn 1 . La décomposition en partie fixe et partie variable de hm reste la même : n f m pi où pn est le plus grand facteur premier utilisé dans hm ; i 1 vm hm . fm On générera de la même façon tous les candidats possibles pour vm+1 parmi les 2i 3 j 5 j 7k avec i j k l en partant de i = 8, jusqu’à i = 0. Comme précédemment, on sait que hm 1 vérifie : hm hm1 2hm soit f mvm f m1vm1 2 f mvm : cette fois, fm+1 contient les mêmes facteurs que fm, plus le facteur pn 1 . La simplification conduit donc à : vm pn1vm1 2vm ou encore v vm vm 1 2 m . pn 1 pn 1 On élimine donc tous les candidats qui ne vérifieraient pas ces inégalités. Plaçons-nous enfin dans le cas c, où hm+1 utilise un facteur premier de moins que hm : si le plus grand utilisé dans hm est pn , le plus grand utilisé dans hm+1 est donc pn 1 . La décomposition en partie fixe et partie variable de hm reste encore et toujours la même : n f m pi où pn est le plus grand facteur premier utilisé dans hm ; i 1 vm hm . fm On générera de la même façon tous les candidats possibles pour vm+1 parmi les 2i 3 j 5 j 7k avec i j k l en partant de i = 8, jusqu’à i = 0. Comme précédemment, on sait que hm 1 vérifie : hm hm1 2hm soit f mvm f m1vm1 2 f mvm : cette fois, fm+1 contient un facteur de moins que fm. La simplification conduit donc à : pn vm vm1 2 pn vm . On élimine donc tous les candidats qui ne vérifieraient pas ces inégalités. On dispose donc d’une liste de nombres candidats pour hm+1 : il reste à déterminer le plus petit de ces nombres ayant un nombre de diviseurs strictement plus grand que celui de hn. Celui-là sera par définition l’entier hautement composé que l’on cherche, à savoir hm+1. Les idées précédentes sont mises en œuvre dans la longue mais performante fonction nhc suivante. On raisonne sur des listes d’exposants, plus simples à manipuler, et sur les opérations sur les listes. Ainsi, le calcul de la somme des diviseurs d’un entier se résume à l’instruction : product(lex+1), si lex désigne la liste d’exposants considérée. © T³ France 2011 / Photocopie autorisée Autour des diviseurs d’un entier 23 lex On reconstitue alors l’entier avec product({2,3,5,7,11,13,17,19} ). Par ailleurs, la fonction nhc appelle deux fonctions intermédiaires. La première, lisprem, renvoie la liste des n premiers nombres premiers : La seconde va servir à reconstituer un entier à partir de sa partie variable : ainsi à partir d’une liste à quatre termes, du type v = {2,3,1,2}, correspondant à 22 33 51 72 , cette fonction renvoie la liste de longueur l faisant intervenir les l premiers nombres premiers, correspondant à 22 33 51 72 2 3 5 7 1113 23 34 52 73 1113 soit {3,4,2,3,1,1}. © T³ France 2011 / Photocopie autorisée 24 Mathématiques et TI-Nspire Ci-dessous la fonction nhc : elle est longue, très longue (c’est la plus longue que nous écrirons dans ce livre) mais la compréhension de ce qu’elle fait est sans aucun doute un excellent exercice. Des commentaires détaillés ont été insérés dans le code pour préciser le rôle de certaines instructions. © T³ France 2011 / Photocopie autorisée Autour des diviseurs d’un entier 25 On se rappelle que la fonction précédente peut être utilisée sans problème pour des nombres avec des facteurs premiers ne dépassant pas 29 donc pour des listes d’exposants n’excédant pas 10 termes. Il faut par contre démarrer à un nombre où l’on dispose d’au moins 5 facteurs. Par exemple, on peut repartir du résultat correspondant au 27e nombre hautement composé, à savoir {4,2,1,1,1} et constater que l’on retrouve bien la succession des exposants rappelée plus haut. On saisit d’abord : nhc({4,2,1,1,1}) puis nhc(ans) ; En appuyant sur la touche ·, on obtient tous les entiers hautement composés successifs, depuis le 27e. On peut constater que cela coïncide bien avec les premiers termes de la liste étudiée précédemment. © T³ France 2011 / Photocopie autorisée 26 Mathématiques et TI-Nspire Pour obtenir le 100e comme Ramanujan, voire un peu plus si les conditions sont favorables, une boucle s’impose : On y a prévu un message d’avertissement si le nombre de nombres premiers dépasse 10, c’est-à-dire si l’on va au-delà de 29. On arrive jusqu’au 119e nombre hautement composé égal à : 260 858 031 033 600… nombre absolument inaccessible si l’on s’était cantonné au balayage24… 24 Remarquons que le 120e nombre est correct mais par prudence, il vaut mieux l’exclure. © T³ France 2011 / Photocopie autorisée Autour des diviseurs d’un entier 27 Ramanujan était parvenu, sans doute par un procédé assez proche25, au centième nombre hautement composé, égal à : 3 212 537 328 00026. On pourrait poursuivre aisément, d’autant que les fonctions précédentes sont très rapides, en travaillant avec {2,3,5,7,11} pour la partie variable, puis {2,3,5,7,11,13}… Nous laissons au lecteur le soin de s’atteler à cette tâche ! 25 Mais à la main, évidemment ! 26 Tous ces résultats peuvent être vérifiés sur le site http://wwwhomes.uni-bielefeld.de/achim/highly.txt. Signalons aussi que l’algorithme est expliqué sur le même site http://wwwhomes.uni-bielefeld.de/achim/julianmanuscript3.pdf. © T³ France 2011 / Photocopie autorisée