Nombres premiers 2.1 Quoi de plus simple qu`un nombre premier ?

2
Nombres premiers
2.1 Quoi de plus simple qu’un nombre premier ?
Rappel:
Un entier naturel est dit
premier
s’il est supérieur ou égal à 2 et
n’est divisible que par 1 et lui-même.
Quoi de plus simple ?:
Euclide d’Alexandrie
-325 à -265 av. J.-C.
Et pourtant, ils renferment tant de mystères que les plus grands esprits
depuis des siècles n’ont toujours pas réussi à en percer tous les secrets, et
ce malgré les énormes progrès technologiques et les investissements colos-
saux consentis par les pouvoirs tant civils que militaires pour assurer ou
percer la confidentialité des transmissions de toutes natures qui continue
de dépendre d’une meilleure connaissance des nombres premiers, ce que
nous verrons un peu plus loin.
Qui sont-ils ? Combien sont-ils ? sont-ils ? À quoi servent-ils ? Nous
essaierons de donner quelques éléments de réponses à ces questions.
Mais tout d’abord, pourquoi jouent-ils un rôle si important ?
Fondamentalement, il existe deux manières d’engendrer :
si on veut engendrer en utilisant l’
addition
, on s’aperçoit que
le nombre 1 nous sut : on « fabrique » 2 en additionnant 1 avec
lui-même; 3 en additionnant 1 avec 2, etc.
si on veut engendrer en utilisant la
multiplication
, là, les
choses se compliquent. Pour « fabriquer » 2, il faut le créer; même
problème pour 3. On fabrique 4 en multipliant 2 avec lui-même,
mais il faut créer 5. On fabrique 6 en multipliant 3 avec 2. On
crée 7. On fabrique 8 à partir de 2. On fabrique 9 à partir de 3.
On fabrique 10 à partir de 2 et 5, etc.
Les nombres que l’on est obligé de créer sont les briques nécessaires
à fabriquer tous les autres. C’est bien plus compliqué que l’addition
me direz-vous, mais la multiplication est plus « puissante » et
nous permet d’aller bien plus vite et plus loin.
Les nombres premiers sont donc ces éléments qui nous permettent
de fabriquer tous les autres. Un des premiers problèmes étudiés a
été de savoir s’ils peuvent tenir dans une boîte, comme les Legos
dans la chambre d’un enfant. Euclide a répondu à cette question il
y a vingt-trois siècles et la réponse est non.
Pour le prouver, nous aurons besoin d’un résultat intermédiaire :
13
14 CHAPITRE 2. NOMBRES PREMIERS
Proposition: Tout entier naturel nadmet au moins un diviseur premier.
Preuve:
En eet, soit
n
est premier et il est divisible par lui-même, soit
n
n’est pas premier et il admet un certain nombre de diviseurs.
Appelons
p
le plus petit de ces diviseurs.
p
est premier, car sinon
p
aurait un diviseur d, plus petit que p, et qui diviserait n.
Théorème: Il y a une infinité de nombres premiers.
Preuve:
Raisonnons par l’absurde et supposons qu’il existe exactement
n
nombres premiers qu’on nommera
p1
,
p2
, ...,
pn
. Appelons
N
le
nombre
N“pp1¨p2¨...¨pnq`1
Il est plus grand que tous les
pi
, donc il n’est pas premier. Ainsi, il
admet un diviseur premier
p
qui est un des
pi
, puisqu’il n’y a qu’eux.
Nous avons alors :
pdivise Np1¨p2¨...¨pn`1
pdivise p1¨p2¨...p
n*ùñ pdivise N´p1¨...¨pn1
Donc
p
1ce qui est absurde puisqu’il est premier. Ainsi, cette
contradiction nous assure qu’il ne peut exister de plus grand nombre
premier. Il y a donc une infinité et l’aventure ne fait que commencer.
Quelques records:
Le 4 février 2005, Martin Nowak a battu le record du plus
grand nombre premier connu alors : 2
2519641951 ´
1en faisant tra-
vailler plus de 50 jours durant un Pentium 4 (2,4 GHz). Cette
découverte s’est faite dans le cadre du programme GIMPS
1
de
recherche de grand nombre. Nowak est un chasseur de grand
nombre et ophtalmologiste allemand à ses heures perdues ;-).
Le GIMPS a pu remporter le 23 août 2008, la première ré-
compense de 100’000 USD oerte par l’Electronic Frontier
Foundation pour la découverte du premier nombre premier
de plus de dix millions de chires (2
4311121609 ´
1). Les règles
de répartition de la récompense sont prévues par le GIMPS :
l’internaute qui trouve le nombre, le GIMPS, des oeuvres cari-
tatives et les autres internautes qui participent au GIMPS et
trouvent des nombres premiers.
L’Electronic Frontier Foundation ore d’autres récompenses
de 100’000, 150’000 et de 250’000 USD pour, respectivement,
la découverte de nombres premiers de plus de dix millions,
cent millions et un milliard de chires. À bon entendeur!!!
1
.Great Internet Mersenne Prime Search est un projet de calcul partagé où les volontaires utilisent un logiciel
pour chercher les nombres premiers de Mersenne de la forme 2p´1,avecppremier.
CHAPITRE 2. NOMBRES PREMIERS 15
Curtis Cooper
Mathématicien américain
L’actuel plus grand nombre premier connu :
27412071281 ´1formé de 22’338’618 chires
fut découvert le 17 septembre 2015. Un bug ayant empêché le
logiciel d’envoyer l’e-mail alertant de la découverte, ce n’est
que le 7 janvier 2016, après une maintenance de routine, que
le record a pu être ocialisé. Grâce à lui, c’est la quatrième
fois que le mathématicien Curtis Cooper découvre un nombre
premier supérieur au précédent.
Exercice 2.1 2¨3`1...
2¨3¨5`1...
2¨3¨5¨7`1...
2¨3¨5¨7¨11 `1... etc ...
a)
Peut-on armer que le résultat de ces calculs est forcément
un nombre premier ?
b) Considérons : 2¨3¨5¨7¨11 ¨13 `1
Justifier qu’il n’est pas divisible par 2, 3, 5, 7, 11, 13
Mais n’est-il pas divisible par au moins un autre nombre
premier? (à tester à la calculatrice)
Exercice 2.2 Démontrer que la proposition suivante est fausse :
@nP,n
2´n`41 est un nombre premier
Indication : Pour démontrer qu’une proposition est fausse, il sutde
trouver un contre-exemple, c’est-à-dire une valeur (naïve ?) de
n
,ne
vérifiant pas la proposition.
Exercice 2.3 a)
Écrire le pseudo-code est_premier permettant de tester si un
nombre est premier.
Indication : Dans la remarque, en bas de page 8, nous avons déjà
défini la fonction amodbqui donne le reste de la division de
a
par
b. Ainsi 5 est un nombre premier car :
5 mod 2, 5 mod 3, 5 mod 4 sont toujours diérents de 0.
b)
Vérifier votre pseudo-code “à la main” pour les nombres 6 et 7.
c) Programmer-le en SageMath puis contrôler que vous obtenez :
est_premier(1321)
|True
est_premier(1322)
|False
16 CHAPITRE 2. NOMBRES PREMIERS
2.2 Test de primalité d’un nombre
Question:
Il est facile de vérifier de tête que 7, 13 ou 31 sont des nombres pre-
miers. Quelle méthode adopter pour montrer que 1321 est premier?
Premier algorithme:
Essayer toutes les divisions de 1321 par D, pour D allant de 2 à
1320. Si aucune division ne “tombe juste”, alors on peut armer
que 1321 est premier.
C’est probablement un algorithme semblable à celui que vous avez
proposé dans l’exercice précédent.
def est_premier(p):
if p==0 or p==1:
return False
else:
if p==2:
return True
else:
for kin [2..p-1]:
if p%k==0:
return False
return True
On obtient alors :
est_premier(1321)
|True
Cet algorithme peut être
optimisé
. Proposer 1319 calculs lorsque
36 peuvent sure...
2edémarche: Observons les tableaux suivants :
diviseur 2345678910
quotient 660,5 440,3 330,3 264,2 220,2 188,7 165,1 146,8 132,1
diviseur 11 12 13 14 15 16 17 18 19
quotient 120,1 110,1 101,6 94,36 88,07 82,56 77,71 73,39 69,53
diviseur 20 21 22 23 24 25 26 27 28
quotient 66,05 62,90 60,05 57,43 55,04 52,84 50,81 48,93 47,18
diviseur 29 30 31 32 33 34 35 36 37
quotient 45,55 44,03 42,61 41,28 40,03 38,85 37,74 36,69 35,70
Le tableau semble incomplet : il resterait encore à essayer les quo-
tients de 38 à 1320, mais cela est-il vraiment nécessaire?
Nous observons qu’à partir de 37, les quotients sont plus petits que
les diviseurs. Aucun de ces quotients pour un diviseur supérieur
à 37 ne peut être entier puisque cela signifierait que 1321 était
déjà divisible par ce quotient. Mais aucune division par un nombre
inférieur à 37 n’a donné de quotient entier. D’où la simplification
suivante :
CHAPITRE 2. NOMBRES PREMIERS 17
Deuxième algorithme:
Essayer
2
toutes les divisions de 1321 par D, pour D allant de 2à
?1321`1.
Ainsi donc, nous sommes passés de 1320 divisions à 36 divisions.
Ceci est un gain appréciable de temps.
Exercice 2.4
Traduire ce deuxième algorithme en un nouveau pseudo-code, puis
proposer une fonction SageMath dont le nom est est_premier2.
Indication : la fonction correspondante à ?ns’écrit sqrt(n).
Exercice 2.5
Leonard Euler
(1601-1665)
Leonard Euler proposa une formule permettant de générer une
multitude de nombres premiers :
fpnq“n2´n`41 nP
a)
Proposer une fonction euler(n) qui, appelant la fonction
est_premier2(n), permet de vérifier la formule d’Euler pour la
valeur de nproposée.
b)
Vérifier que
fp
2
q
,
fp
40
q
sont premiers, mais
fp
41
q
,
fp
42
q
ne
le sont pas.
En modifiant votre fonction :
c)
Montrer que pour
nPr
0;100
s
, la formule d’Euler fournit dans
près de 86% des cas un nombre premier.
d)
Parmi les nombres
nPr
0;100
s
, lesquels ne fournissent pas un
nombre premier ?
Troisième algorithme:
On peut encore améliorer la méthode en essayant que les divisions
par les nombres premiers inférieurs à
?1321`
1, à condition de
disposer d’une liste des nombres premiers. Si vous avez une telle
liste jusqu’à 1000, cela permet de tester rapidement si un nombre
inférieur à 10002est premier. Observons ceci à la page suivante.
2
.
rns
est un codage exprimant la partie entière du nombre réel
n
et correspondant à l’entier qui lui est
immédiatement inférieur ou égal. La fonction correspondante en Python est int().
1 / 10 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 !