Algorithmes de calcul des nombres parfaits et amis

Algorithme simple mais peu efficace de calcul de la somme des diviseurs d'un entier

O(n-2) divisions entieres

/* Tous les entiers entre 2 et nombre-1 sont testés*/
res <== 1

Répéter pour i allant de 2 à Nombre-1

     si reste de la division de Nombre par i = 0

     alors res <== res + i

fin_de_répéter

Algorithme un peu plus rusé de calcul de la somme des diviseurs d'un entier

O(racine(n)) divisions entieres

/* Seuls les entiers entre 2 et racine(nombre) sont testés*/
i <== 2
res <== 1

Tant que i*i <= Nombre

     si reste de la division de Nombre par i = 0

     alors

          res <== res + i + quotient division Nombre par i

     i <== i + 1
fin_de_répéter

Algorithme de calcul de la liste des nombres parfaits inférieurs à un N donné

/* Les nombres parfaits inférieurs à N sont stockés puis affichés */
j <== 0

Répéter pour i allant de 2 à N

     si somme des diviseurs de i = i

     alors parfaits[j] <== i

              j <== j + 1
fin_de_répéter
/* Affichage de la liste des nombres parfaits */
Répéter pour i allant de 0 à j-1
      Ecrire (parfaits[i])
fin_de_répéter

Algorithme d'affichage des nombres amis inférieurs à un N donné

/* Les nombres amis inférieurs à N sont affichés directement */
j <== 0

Répéter pour i allant de 2 à N

     somme1 <== somme des diviseurs de i
     somme2 <== somme des diviseurs de somme1
     /* pas parfait mais amis */
     si i <> somme1 et i=somme2

     alors Ecrire (somme1 et i sont amis)

fin_de_répéter