Logo du site de mathématiques Calculus Logo du site de mathématiques Calculus
Déterminer si un nombre est parfait - Calculus


Publié le vendredi 10 juillet 2020
Modifié le samedi 09 avril 2022 à 15h57
 3 min

Déterminer si un nombre est parfait

Définition : un nombre parfait est un nombre égal à la somme de ses diviseurs (hormis lui-même).
Remarque : on peut aussi dire qu'un nombre est parfait si la somme de tous ses diviseurs est égale au double de ce nombre.
Pour vérifier si un nombre est parfait, on détermine d'abord les diviseurs de ce nombre, et on en fait la somme sans prendre le nombre lui-même. Si cette somme correspond au nombre initial alors il s'agit d'un nombre parfait.
Remarque : à ce jour, il n'existe pas de nombre parfait impair connu, et aucune démonstration n'existe à ce sujet.

Exemples :

Vérifier que \(28\) est parfait :
On cherche les diviseurs de \(28\) :
\(28 = 1 \times 28\)
\(28 = 2 \times 14\)
\(28 = 4 \times 7\)
Les diviseurs de \(28\) sont \(1;2;4;7;14\) et \(28\).
On en fait la somme sans prendre \(28\) :
\(1+2+4+7+14 = 28\)
Donc \(28\) est bien un nombre parfait.
Déterminer si \(32\) est parfait :
On détermine les diviseurs de \(32\) :
\(32=1 \times 32\)
\(32=2 \times 16\)
\(32=4 \times 8\)
Les diviseurs de \(32\) sont \(1;2;4;8;16\) et \(32\).
\(1+2+4+8+16 = 31\)
Donc \(32\) n'est pas parfait.
Cette fonction Python permet de déterminer si un nombre entier est parfait :
PYTHON
def est_parfait(n):
        somme_diviseurs = 1 #on commence à 1 car on ne le testera pas mais il est toujours diviseur
        for i in range(2, round(n**0.5)+1): #on teste tous les entiers de 2 jusqu'à racine de n comprise
                #comme les diviseurs vont par pair, cela permet de simplifier les calculs
                if n%i == 0: #si i est un diviseur de n
                        somme_diviseurs += i #on ajoute i à la somme
                        somme_diviseurs += n/i #on ajoute n/i, qui est aussi un diviseur de n
        if n == somme_diviseurs :
                return True
        else :
                return False

retour vers la liste d'articles