Christian Vassard (IUFM Rouen)
6
Chapitre
Quoi de plus simple que la notion de nombre premier ? Tout un chacun, même le plus rétif aux
mathématiques, est en mesure de la comprendre : un nombre premier possède exactement deux
diviseurs. Euclide, encore lui, au IIIe siècle avant Jésus-Christ, écrivait dans la définition XII, au tout
début du livre VII des Éléments, le premier des trois consacré à l’arithmétique : le nombre premier est
celui qui est mesuré par l'unité seule. Derrière cette simplicité apparente, se cache une richesse inouïe,
que la calculatrice permet d’explorer. Nous verrons entre autres comment prouver qu’un certain
nombre de 183 chiffres est bien premier !
Sommaire
Chapitre 6. Autour des nombres premiers ........................................................... 73
1. Reconnaître si un nombre est premier ................................................... 74
1.1 La fonction plus petit diviseur d’un entier..................................... 74
1.2 Une fonction ppd .............................................................................. 75
1.3 Un premier test de primalité ........................................................... 77
1.4 Les limites d’un tel algorithme ....................................................... 78
2. Obtenir des listes de nombres premiers ................................................ 78
2.1 Le crible d’Ératosthène ................................................................... 79
2.2 Compter les nombres premiers ..................................................... 81
3. Le célèbre petit théorème de Fermat ..................................................... 84
3.1 Introduction historique .................................................................... 84
3.2 L’énoncé du petit théorème de Fermat ........................................ 84
3.3 Un critère pour prouver qu’un nombre est composé ................. 87
4. Quelle réciproque pour le petit théorème de Fermat ? ........................ 88
4.1 Réciproque or not réciproque ? ..................................................... 88
4.2 Une « réciproque » au théorème de Fermat ............................... 89
4.3 Quelques exemples ......................................................................... 90
4.4 Un test de primalité ......................................................................... 93
Chapitre 6.
Autour des nombres
premiers
74 Mathématiques et TI-Nspire
© T³ France 2010 / Photocopie autorisée
1. Reconnaître si un nombre est premier
C’est évidemment la question la plus simple que l’on se pose quand on vient de donner la définition.
Les premiers nombres premiers sont archi-connus mais comment procède-t-on si l’on a affaire à un
nombre plus grand, comme 1 234 567 891 ou 1 234 567 891 234 567 ? Nous excluons dans ce
chapitre le recours à l’excellente fonction isprime de la calculatrice ; rien ne remplace la réflexion
que l’on peut mener soi-même autour de ces problèmes fondamentaux posés par l’arithmétique.
1.1 La fonction plus petit diviseur d’un entier
Si l’on cherche à reformuler le problème posé, un entier n est premier lorsque le plus petit
diviseur strictement supérieur à 1 de n est… n lui-même. D’où l’intérêt de commencer en écrivant une
fonction donnant le plus petit diviseur p strictement supérieur à 1 d’un entier n, ce que nous écrirons à
l’avenir d’une notation peu répandue mais fort commode : ppd(n).
Comment ferions-nous à la main avec un entier quelconque pour déterminer son ppd ?
On teste successivement si n est divisible par 2, puis par 3, etc. : on s’arrête dès que l’on a un diviseur.
Étudions ce qui se passe sur quelques exemples :
N
24
35
11
49
127
143
divisible par 2
Vrai
faux
faux
faux
faux
faux
divisible par 3
faux
faux
faux
faux
faux
divisible par 4
faux
faux
faux
faux
faux
divisible par 5
vrai
faux
faux
faux
faux
divisible par 6
faux
faux
faux
faux
divisible par 7
faux
vrai
faux
faux
divisible par 8
faux
faux
faux
divisible par 9
faux
faux
faux
divisible par 10
faux
faux
faux
divisible par 11
vrai
faux
vrai
Un même calcul doit donc être effectué un certain nombre de fois : en commençant à d = 2, puis en
incrémentant de 1, on doit tester si n est divisible par d (c’est-à-dire pour la calculatrice si
mod(n,d)=0). Dès que c’est le cas, on renvoie la valeur de d trouvée ; sinon on poursuit et au pire,
dans le cas où n est premier, on s’arrête lorsque d2 dépasse n.
Cette démarche peut être aisément transposée sur un tableur.
L’entier à étudier est placé dans la cellule A1 et mémorisé dans une variable n. On teste tous les
entiers compris entre 2 et n , que l’on peut placer dans la colonne B, avec une instruction seq. On
exclut d’emblée le 1.
Dans la colonne C, on repère ceux qui divisent n s’ils existent ; sinon on met void dans la cellule.
Plutôt que recopier arbitrairement sur un certain nombre de lignes, il vaut mieux utiliser un seq,
comme on l’a déjà vu dans un exemple précédent :
=seq(when(mod('n,k)=0,k,_,_),k,2,√('n))
Dans la colonne D, on supprime les nombreux void de la colonne C.
Autour des nombres premiers 75
© T³ France 2010 / Photocopie autorisée
Les résultats peuvent alors être indiqués : si la cellule D1 n’est pas vide (not isvoid(d1) est vrai), son
contenu donne le ppd de l’entier n considéré et on sait que n n’est pas premier ; si la cellule est vide,
le ppd de n vaut n et n est premier.
Le fait que les colonnes s’ajustent en fonction du nombre considéré nous autorise à travailler avec des
entiers suffisamment grands (attention à la limitation à 2500 lignes pour le tableur). Le tableur
présente cependant un défaut : il effectue tous les calculs quand bien même sait-on dès le début que le
nombre considéré est un multiple de 2, par exemple.
1.2 Une fonction ppd
La fonction nous donnera plus de souplesse : pour un multiple de 2, ou de 3, par exemple, elle
doit pouvoir renvoyer une réponse rapide, quand bien même le nombre serait gigantesque.
Une boucle While s’impose puisqu’on ne sait pas a priori combien de fois on va parcourir cette
boucle. Deux façons de sortir de la boucle
1
: soit parce qu’on a trouvé un diviseur qui sera le ppd
cherché, soit parce qu’on a dépassé n et dans ce cas, le ppd vaut n.
À l’inverse, on reste dans la boucle tant quon n’a pas trouvé de diviseurs (mod(n,d)
0) et que d2 est
inférieur ou égal à n.
Voici le code d’une première fonction ppd1, basé sur les remarques précédentes :
1
C’est souvent une bonne façon de déterminer la condition à mettre dans la boucle. On sait plus facilement quand on doit en sortir… il
suffit de prendre la négation.
76 Mathématiques et TI-Nspire
© T³ France 2010 / Photocopie autorisée
Ci-dessous quelques-uns des résultats obtenus :
Mais la fonction, on s’en doute, peut encore notablement être améliorée. En effet si n est impair, il est
inutile de rechercher un diviseur pair. En d’autres termes, dès qu’on sait qu’un entier n’est pas
divisible par 2, pas besoin de tester s’il est divisible par 4, 6, 8, etc.
Concrètement, on peut donc au préalable tester si n est divisible par 2, puis ne plus tester que les
diviseurs impairs en commençant à d = 3. Globalement, on peut espérer aller deux fois plus vite
lorsqu’il faut balayer beaucoup de diviseurs, notamment quand le nombre considéré est premier
2
.
C’est l’objet de la fonction ppd suivante :
2
20 s avec ppd1 appliquée à 10 000 000 000 037… 12 s avec ppd.
Autour des nombres premiers 77
© T³ France 2010 / Photocopie autorisée
Les résultats sont corrects et obtenus plus rapidement :
1.3 Un premier test de primalité
L’essentiel du travail est fait avec la fonction ppd précédente : n > 1 est premier si et seulement si
ppd(n)=n. Le cas n = 1 doit être envisagé à part. Le code du programme est donné ci-après. On
remarquera l’emploi de If Then, Elseif Then, Else et Endif, qui permet de gérer ici trois éventualités.
Testons cette fonction avec quelques entiers. Pour les petites valeurs, les ponses sont données
presqu’immédiatement, ainsi d’ailleurs que pour des valeurs plus grandes, pourvu qu’elles possèdent
un petit diviseur. Les cas les plus défavorables correspondent aux nombres premiers, ce qui est le cas
des exemples qui suivent :
Le premier résultat est obtenu à la calculatrice en une quinzaine de secondes, le second en 48
secondes mais le troisième demande 2 minutes 33 secondes. La dégradation des performances est
particulièrement rapide : pourtant le dernier nombre étudié ne possède que 12 chiffres.
1 / 23 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !