Langace C, Nombre parfait

Bonjour,

je suis debutant en langage et j'aimerais faire un programme qui teste si un nombre un parfait (on dit qu'un nombre est parfait s'il est égal à à la somme de ses diviseurs sauf lui même. exemple 6. Preuve: 6=3+2+1 et 6/1=6,6/2=3,6/3=2).
voici mon programmme

#include<stdio.h>
int nbr,n,som,quotient;
main()
{
do
{
printf("Entrez le nombre à tester: ");
scanf("%d", &nbr);
}
while(nbr<0);
som=0;
for(n=1;n=nbr-1;n++)
{
if(nbr%n==0)
{
quotient=nbr/n;
if(quotient==n)
som=som+1;
if(quotient!=n)
som=som+2;
}
}
if(som==nbr)
printf("%d est un nombre parfait", nbr);
else
printf("%d n'est pas un nombre parfait", nbr);
}

mais à l'exécution (je suis sous ubuntu), le curseur revient à la ligne et puis rien ne se passe.
aidez moi.

Merci



--
Dieu n'a fait qu'ébaucher l'homme, c'est sur terre que chacun se crèe

3 réponses

  1. Modérateur
    Comme le disait Arya Dröttningu, ton erreur est dans la boucle for, en effet n=nbr-1 n'est pas une condition d'arrêt, c'est une affection, et du coup ta boucle ne s'arrête jamais... Modifies ça en n<=nbr-1 ou n<nbr et ça se terminera.

    Remarque : ton calcul est faux, je l'ai testé entre 1 et 10000, il trouve 2 (qui n'est pas parfait) et 6 alors qu'on devrait trouver 6, 28, 496 et 8128...
    4