Bonjour et bonne année,
quelques rectifications,
un nombre est parfait ssi il est égal à la somme de ses diviseurs propres
par exemple 28 admet 28 comme diviseur, si si!
de sorte que la somme des diviseurs tout court de 28 est 1 + 2 + 4 + 7 + 14 + 28 = 56
les diviseurs propres sont avec 28 exclus 1 + 2 + 4 + 7 + 14 = 28
Citation :
Donc un nombre peut avoir des diviseurs supérieurs à sa racine.
Donc votre algorithme est faux.
parce que tu ne l'as pas compris
si m est un diviseur de N <

N, alors N/m est aussi un diviseur de N
de sorte que la recherche des diviseurs peut s'arrêter à

N
et à chaque fois on trouve
deux diviseurs d'un coup.
sauf si m est égal à

N, car alors "l'autre" diviseur est le même.
Citation :
Si vous n'êtes toujours pas convaincus, voici un exemple de son exécution :
la preuve qu'un algorithme est correct ne peut pas être un exemple d'exécution !!
un exemple d'exécution ne peut éventuellement que apporter la preuve qu'un algorithme n'est pas correct
(s'il plante ou donne un résultat faux)
si "ça marche" on a juste augmenté la confiance subjective qu'il est
peut être bon.
le tien est correct pour trouver les nombres parfaits mais pas optimisé du tout car tu fais trop d'essais (N/2 >

N)
l'algorithme de carpediem est tout aussi correct exclusivement parce qu'on sait qu'un carré ne peut pas être un nombre parfait
donc inutile de tester si

n est un nombre entier, à chaque test il trouve deux diviseurs distincts.
et comme il trouve tous les diviseurs y compris n lui même, le critère est que la somme de tous les diviseurs, y compris n, soit le double de n.