Exercice langage C : Fonction qui retourne la somme des diviseurs d'un nombre passé en paramètre

Travail à 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


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/* 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;
}