Module 06 · Leçon 3
Nombres parfaits et nombres amis
Ce que vous saurez faire
- Calculer la somme des diviseurs propres d'un entier
- Tester si un nombre est parfait
- Tester si deux nombres sont amis
Avant de commencer
6 = 1 + 2 + 3 : 6 est le plus petit nombre parfait. Les diviseurs
propres de 220 sont 1+2+4+5+10+11+20+22+44+55+110 = 284, et
réciproquement pour 284 → 220. Ces deux nombres sont amis.
1. Somme des diviseurs propres
FUNCTION SommeDiv(n : integer) : integer;
VAR i, s : integer;
BEGIN
s := 0;
FOR i := 1 TO n DIV 2 DO { aucun diviseur propre > n/2 }
IF n MOD i = 0 THEN
s := s + i;
SommeDiv := s;
END;
SommeDiv(6) = 1 + 2 + 3 = 6. SommeDiv(12) = 1+2+3+4+6 = 16.
2. Nombre parfait
FUNCTION EstParfait(n : integer) : boolean;
BEGIN
EstParfait := (n = SommeDiv(n)) AND (n > 0);
END;
Premiers parfaits : 6, 28, 496, 8128. Ils sont rares !
3. Nombres amis
FUNCTION SontAmis(a, b : integer) : boolean;
BEGIN
SontAmis := (a <> b) AND (SommeDiv(a) = b) AND (SommeDiv(b) = a);
END;
Couple célèbre : (220, 284). Le suivant : (1184, 1210).
4. Exercices
Lister tous les diviseurs propres de 28. Vérifier que 28 est parfait.
Voir le corrigé
Diviseurs propres de 28 : 1, 2, 4, 7, 14.
Somme : 1+2+4+7+14 = 28. Oui, 28 est parfait.
Écrire un programme qui demande N et affiche tous les nombres parfaits
inférieurs ou égaux à N.
Voir le corrigé
PROGRAM Parfaits;
VAR n, k : integer;
BEGIN
Write('N : ');
Readln(n);
FOR k := 1 TO n DO
IF EstParfait(k) THEN
Writeln(k, ' est parfait');
END.
Pour N = 1000, le programme affiche 6, 28, 496.
Trouver tous les couples (a, b) avec a < b ≤ N tels que a et
b sont amis. Pour N = 1500.
Voir le corrigé
PROGRAM Amis;
CONST N = 1500;
VAR a, b : integer;
BEGIN
FOR a := 2 TO N DO
BEGIN
b := SommeDiv(a);
IF (b > a) AND (b <= N) AND (SommeDiv(b) = a) THEN
Writeln('(', a, ', ', b, ')');
END;
END.
Affichage : (220, 284), (1184, 1210).
L'astuce b > a évite d'afficher chaque couple deux fois.
5. Erreurs fréquentes au bac
- Inclure
ndans la somme :FOR i := 1 TO nau lieu den DIV 2. - Tester
n=0ou négatif sans le bloquer. - Pour les amis : oublier que
a ≠ b(sinon tous les parfaits seraient amis avec eux-mêmes).
6. Quiz
Quiz (5 questions)
Les diviseurs propres de 12 sont :
Le premier nombre parfait est :
Pour optimiser SommeDiv, on peut boucler jusqu'à :
Deux nombres amis vérifient :
Tous les nombres parfaits connus sont :