Solutions détaillées de neuf exercices sur la notion de nombre premier (fiche 02).
Cliquer ici pour accéder aux énoncés.
Pour commencer :
et de même :
Pour finir :
et donc :
Soit et soit sa racine cubique entière.
Supposons que ne possède aucun diviseur tel que
Montrons que est premier ou produit de deux nombres premiers, en écartant les autres possibilités :
- Déjà, ne peut pas posséder trois facteurs premiers distincts. En effet, si sont premiers et divisent alors donc est un diviseur non trivial de strictement inférieur à
- Supposons maintenant que avec et tels que Si par exemple alors d’où : contradiction. Même chose en supposant Donc
- On voit de même que avec et ne tient pas.
Les seules possibilités sont donc :
➣ avec et
➣ avec distincts.
En conclusion, est un nombre premier ou bien le produit de deux nombres premiers.
L’algorithme standard de primalité consiste à chercher d’éventuels diviseurs jusqu’à la racine carrée entière incluse. Il est expliqué en détail dans cet article ainsi que dans cette vidéo.
Sa transcription en Python est alors assez directe :
def ppfp(n):
if n < 2:
return None
elif n % 2 == 0:
return 2
d = 3
isprime = True
while (d * d <= n and isprime):
if n % d == 0:
isprime = False
else:
d += 2
if isprime:
return n
else:
return d
A partir de là, il est facile de dresser la liste des facteurs premiers d’un entier Il suffit d’initialiser une variable à de le diviser par son PPFP et de recommencer … jusqu’à ce qu’on atteigne 1.
C’est ce que fait la fonction dfp (pour Décomposition en Facteurs Premiers) ci-dessous. La liste renvoyée contient la liste des facteurs premiers de (avec d’éventuelles répétitions bien entendu).
def dfp(n):
L = []
x = n
while x > 1:
p = ppfp(x)
L.append(p)
x = x // p
return L
Exemple :
>>> dfp (1571427)
[3, 3, 3, 11, 11, 13, 37]
Ce n’était pas demandé, mais on peut obtenir à partir de là une décomposition en facteurs premiers « compacte », c’est-à-dire une liste de couples (facteur premier, exposant). L’implémentation ci-dessous repose sur l’utilisation d’un dictionnaire :
dfpc(n):
L = dfp(n)
L.reverse()
couples = {}
while L != []:
q = L.pop()
if q in couples:
couples[q] = couples[q] + 1
else:
couples[q] = 1
return couples
Exemple :
>>> dfpc (1571427)
{3: 3, 11: 2, 13: 1, 37: 1}
Posons, pour tout :
Clairement Supposons maintenant que Comme :
et donc :
Comme alors en particulier et donc
Conclusion : 0 est le seul entier pour lequel est premier.
On rappelle (voir l’exercice n° 8 de la fiche n° 1 consacrée aux nombres premiers) que si et alors :
()
Montrons par récurrence (finie) que :
- Pour ok.
- Supposons que pour un certain tel que Alors, d’après la formule de Pascal :
Noter qu’on a pu utiliser puisque
Posons :
Comme alors :
Soit un facteur premier de Il existe tel que Comme aucun des pour ne divise alors et donc :
d’où finalement :
Si alors convient, puisque :
Si alors est premier avec chacun des entiers et
Donc, d’après le petit théorème de Fermat :
donc :
et finalement (comme est premier avec , on voit que convient.
D’après la formule de Legendre :
En fait, on peut se limiter aux termes d’indices avec :
puisque si alors et donc
Comme pour tout :
Or et donc :
et aussi lorsque donc :
Soit un nombre parfait pair, distinct de 6. On sait qu’il existe tel que :
- le cas est exclu, puisque
- si alors
Et si alors ou bien ce qui conduit aux deux cas supplémentaires ci-dessous. On va utiliser le fait que :
()
ce qui résulte simplement du fait que :
- si alors d’après
- si alors toujours d’après
On a bien établi que
Remarque
Comme tout entier naturel est congru modulo 9 à la somme de ses chiffres, ceci explique l’observation faite par Tartaglia (1506 – 1559) qu’en itérant le calcul de la somme des chiffres décimaux d’un nombre parfait pair, autre que 6, on aboutisse toujours à 1 :
Si un point n’est pas clair ou vous paraît insuffisamment détaillé, n’hésitez pas à poster un commentaire ou à me joindre via le formulaire de contact.