voici un programme qui affiche la liste des parfaits (méthode brutale) dans un intervalle compris entre 1 et x
je rappelle qu'un nombre parfait est celui dont la somme de ses diviseurs propres (lui exclu) lui est égale.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 program nb_parfaits; uses wincrt; var e,d,s,x:integer; begin writeln('le morveux qui a développé ce programme veut afficher'); writeln('une liste des nombres parfaits. On commence par 1,'); writeln('jusqu''à quel entier naturel voulez-vous effectuer le test?'); readln(x); writeln('c''est un bon choix :)'); writeln('la liste :'); for e:=1 to x do begin s:=0; for d:=1 to (e div 2) do begin if e mod d=0 then begin s:=s+d; if s=e then writeln(e); end end end end.
Le problème : dans la liste figure le nombre 24 qui n'est pas parfait (24<> (2+3+4+6+8+12))
Y'a-t-il une erreur dans l'algorithme ?
Merci.
Partager