Exercice langage C : Fonction qui retourne la somme des diviseurs d'un nombre passé en paramètre
Rédigé par GC Team, Publié le 23 Février 2012, Mise à jour le Lundi, 07 Novembre 2022 15:26Travail à Faire :
Un nombre entier est parfait s'il est égal à la somme de ses diviseurs (sauf lui-même).
Ex : 6 = 1 + 2 + 3 est parfait.
Ecrire une fonction somme_div qui retourne la somme des diviseurs d'un nombre passé en paramètre.
Ecrire une fonction parfait qui teste si un nombre passé en paramètre est parfait et qui retourne
1 s'il l'est et 0 sinon.
Ecrire un programme principal qui affiche tous les nombres parfaits inférieurs à une certaine limite
/* Calcul des nombres parfaits */
#include
/* calcul de la somme des diviseurs du parametre nombre */
int somme_div ( int nombre );
/* test si le parametre nombre est parfait */
int parfait ( int nombre );
int main()
{
int nombre, limite;
printf("Limite : "); scanf("%d", &limite);
for (nombre=1; nombre<=limite; nombre++)
{
if (parfait(nombre))
{
printf("%d est parfait\n", nombre);
}
}
return 0;
}
int parfait ( int nombre )
{
return (somme_div(nombre) == nombre);
}
int somme_div ( int nombre )
{
int i, somme = 0;
for (i=1; i<=nombre/2; i++)
{
if (nombre % i == 0)
{
somme = somme + i;
}
}
return somme;
}