Nombres parfaits

Fermé
sweetwink Messages postés 77 Date d'inscription dimanche 26 octobre 2008 Statut Membre Dernière intervention 13 janvier 2009 - 9 nov. 2008 à 22:23
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 10 nov. 2008 à 00:29
Bonjour,
ca c 1 nouvo programme kom d'habitude je poste mon travail et celui qui mle corrige sera le bienvenu
pour un programme qui permet d'afficherles nombres parfaits inférieuurs a 1000

#include <stdio.h>
void main()
{
int i , n,


do
printf ( "saisir le nombre ",n);
scanf(n);
for (i=1;i<=n;i++)
{
i=1;
while (n%i=0)
{
printf (" i est un divseur de n");
i++;
}
if ( som+i=n)
printf ( " n n'est pas un nombre parfait");
else
printf("n n'est pa un nombre parfait");
}
while(n >1000)
}

1 réponse

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
10 nov. 2008 à 00:29
Salut,
Regarde bien ton code corrigé, et compare le bien avec ta version.
Attention à l'utilisation de printf, scanf et surtout l'algorithme.
En C, l'égalité est == (double égal). L'affectation est = (simple égal).
Ton algo initial n'était pas bon. Par exemple, i va de 1 à n-1. n ne doit pas être pris en considération pour le calcul du nombre parfait.
#include <stdio.h>

int main(void)
{
    int i,n,som;
    do{
        printf("saisir le nombre : ");
        scanf("%d",&n);
    }while(n>1000);
    som=0;
    for (i=1;i<n;i++){
        if(n%i==0){
            printf("%d est un diviseur de n\n",i);
            som+=i;
        }
    }
    if (som==n)
        printf("%d est un nombre parfait\n",n);
    else
        printf("%d n'est pas un nombre parfait\n",n);

    return 0;
}

Note : Pourquoi se limiter à 1000 pour le nombre parfait ? Le C peut aller bien plus haut ;)
Cdlt
1