Autour des diviseurs d`un entier

publicité
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  p11  p22  ...  prr
b  q11  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 = p11  p22  ...  pss , 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
p11 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  21 un entier quelconque avec 1  3 , entier qui possède donc 1  1
diviseurs.
3N
 3  21  2 , clairement entier et strictement inférieur à N. Il
4
possède quant à lui 2 1  1  21  2 diviseurs.
Considérons alors le nombre N ' 
Il est clair que 21  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  p11  p22  ...  pnn .
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  p11 p22 ... phh ... pk k ... pnn .
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  pn1 , 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  p11 p22 ... phh 1... pk k 1... pnn pn 1 .
ph pk
Comme ph pk  pn1 , 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  12  1...h ...k ...n  1  2  1  12  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  1k  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  p11 p22 ... ph 2 ... pk 2 ... pnn
et
on
considère
alors
l’entier
2
ph
N  p11 p2 2 ... ph 2 ph 2 ... pk1... pnn , 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  12  1...  3  3  ...  2  ...  n  1  1  12  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 21  32 , à savoir 6, 12, 24, 36 et 48. Sont-ce bien les seuls ?
Théorème
Les seuls entiers hautement composés de la forme 21  32 , 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  21  32 , 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
 21 1  32 1  5
23
qui possède 21 2 diviseurs. On a donc :
21 2  1  1 2  1
1 2  1   2  1
1 2  1   2  1
1  12  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  21  3 avec 1  5 ne peut pas être hautement composé.
Supposons qu’il le soit. On sait que N possède 2 1  1  21  2 diviseurs. Comme précédemment
5N
 21  4  3  5 est inférieur à l’entier hautement composé N et qu’il possède
24
4 1  3  41  12 diviseurs.
on remarque que N ' 
Par conséquent, comme précédemment, on peut écrire que :
41  12  21  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  21  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 21  32 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 21  32 –, 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 1113  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  hm1  2hm soit f mvm  f m1vm1  2 f mvm : cette
fois, fm+1 contient les mêmes facteurs que fm, plus le facteur pn 1 . La simplification conduit donc à :
vm  pn1vm1  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  hm1  2hm soit f mvm  f m1vm1  2 f mvm : cette
fois, fm+1 contient un facteur de moins que fm. La simplification conduit donc à :
pn vm  vm1  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 1113  23  34  52  73 1113 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
Téléchargement