Nombre parfait

Résolu
svp mon programme veux pas marcher
aide moi svp

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>

main()
{ int i,s=0,n;
printf("donner n:");
scanf("%d",&n);
while(i<n)
{ if(n%i==0)
 {s=s+i;}
i++;}
if(n=s){printf(" n est parfait ");}
else {printf(" n est non parfait ");}
 getch();
}


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

2 réponses

  1. Contributeur
    Bonjour,

    #include<conio.h>
    Non standard. A supprimer.

    main()
    Non standard. Le bon prototype est : int main (void)

    while(i<n)
    i n'est pas initialisé. Au vu de l'exercice, il faut que tu cases i=1; juste avant le while.

    if(n=s){printf(" n est parfait ");}
    L'opérateur de comparaison en C est le double égal (==).
    => if (n==s)...

    getch();
    Non standard. Utilise plutôt system("pause");

    N'oublie pas d'afficher un '\n' à la fin de ta dernière phrase.

    Il manque le return 0; final. À mettre avant l'accolade finale.

    Tu peux par exemple mettre : putchar('\n'); avant le return 0; ou mettre un '\n' à la fin des 2 phrases se terminant par "parfait".

    Cdlt,
    1. merci beaucoup il marche maintenant

      #include<stdio.h>
      #include<stdlib.h>
      #include<conio.h>

      main()
      { int i=1,s=0,n;
      printf("donner n:");
      scanf("%d",&n);
      while(i<n)
      { if(n%i==0)
      {s=s+i;}
      i++;}
      if(n==s){printf(" n est parfait ");}
      else {printf(" n est non parfait ");}
      getch();
    2. Contributeur
      @maria3100Il marche peut-être mais le programme n'est pas correct pour autant.
      Ce n'est pas du C standard.
    3. tu peux m aider je ne sais c est quoi un C standard