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 :

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 :






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 :
()
- Pour
ok.
- Supposons que
pour un certain
tel que
Alors, d’après la formule de Pascal :
Noter qu’on a pu utiliserpuisque

Posons :










Si alors
convient, puisque :





Donc, d’après le petit théorème de Fermat :




D’après la formule de Legendre :




Comme pour tout
:




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 :
()
- 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.