Énoncé
Lire un entier N strictement positif. Tester si N est égal à la somme de ses diviseurs positifs strictement inférieurs à N.
Exemples et cas limites
Saisissez ces valeurs dans la console pour vérifier votre résultat :
Entrée
N = 6
Sortie attendue
Vrai
Entrée
N = 28
Sortie attendue
Vrai
Entrée
N = 12
Sortie attendue
Faux
Entrée
N = 1
Sortie attendue
Faux
Code algorithmique
| 1 | algorithme nombre_parfait |
| 2 | debut |
| 3 | repeter |
| 4 | ecrire("N = ") |
| 5 | lire(n) |
| 6 | jusqua n > 0 |
| 7 | // compléter le traitement demandé dans l’énoncé. |
| 8 | fin |
| 1 | algorithme nombre_parfait |
| 2 | debut |
| 3 | repeter |
| 4 | ecrire("N = ") |
| 5 | lire(n) |
| 6 | jusqua n > 0 |
| 7 | somme ← 0 |
| 8 | pour d de 1 à n div 2 faire |
| 9 | si n mod d = 0 alors |
| 10 | somme ← somme + d |
| 11 | fin si |
| 12 | fin_pour |
| 13 | ecrire_nl(somme = n) |
| 14 | fin |
Méthode
- Accumuler les diviseurs entre 1 et N DIV 2.
- Comparer la somme à N.
Comprendre la correction
Déroulement sur un exemple
- Pour N = 6, on teste D de 1 à 3, soit N DIV 2.
- 1, 2 et 3 divisent 6. Leur somme vaut 6 : le résultat est Vrai.
- Pour 12, les diviseurs propres 1, 2, 3, 4 et 6 totalisent 16. Comme 16 ≠ 12, le résultat est Faux.
Erreurs à éviter
- N lui-même est exclu de la somme : ce sont les diviseurs propres qui comptent.
- Initialisez somme à 0 avant les ajouts, y compris pour N = 1.