Somme des diviseurs propres d'entier amis.

Signaler
Messages postés
2
Date d'inscription
jeudi 1 mai 2008
Statut
Membre
Dernière intervention
4 mars 2010
-
Messages postés
2
Date d'inscription
jeudi 1 mai 2008
Statut
Membre
Dernière intervention
4 mars 2010
-
Bonjour, je suis etudiant en première année d'informatique à la fac. J'ai ici un exercice de tp en C dont l'énoncé est le suivant et où mon code est buggé :

deux nombres entier positifs sont dits amis si la chacun est égal à la somme des deviseurs propres de l'autre plus un.

(il y as un exemple avec 220 et 284 où les diviseurs propres de 220 sont 2,4,5,10,11,20,22,44,55,110 et ceux de 284 sont 2,4,71,142 )

Il me faut écrire une fonction C (int sommeDiviseursPropres(int n) qui calcule la somme des diviseurs d'un entier n, et une fonction int ami( int a, int b) qui renvoie 1 si a et b sont amis, sinon qui renvoi 0.
enfin, je doit faire une fontion principale (main) qui permette de tester l'ensemble.
j'ai écrit ce code :

#include <stdio.h>
#include <stdlib.h>
#include "..\lecture.h"

int sommeDiviseursPropres(int n)
{
int a,i;
a=0;
for (i=2 ; i<n ; i++){
if (n%i==0)
a+=i;
}
return a;
}

int ami(int a, int b)
{
if (b==sommeDiviseursPropres(a) && a==sommeDiviseursPropres(b))
return 1;
else
return 0;
}

int main()
{
int a,b;
a=lire_entier();
b=lire_entier();
if ami(a,b)==1
printf("%d et %d sont bien amis \n" a,b);
else
printf("%d et %d ne sont pas amis \n" a,b);
return 0;
}


et le débuggeur me dit :
In function 'main' :
line 29 error : syntax error before "ami"

la ligne 29 est celle où j'apelle ami, j'ai mis :
if ami(a,b)==1

quelle erreure de syntaxe ai-je fait ?


'avance je vous remercie de votre aide.

1 réponse

Messages postés
2
Date d'inscription
jeudi 1 mai 2008
Statut
Membre
Dernière intervention
4 mars 2010

bon bah j'ai trouvé ce qui n'allais pas en fait , donc voici ma main :

int main()
{
int a,b;
a=lire_entier();
b=lire_entier();
if ((ami(a,b))==1)
printf("%d et %d sont bien amis \n",a,b);
else
printf("%d et %d ne sont pas amis \n",a,b);
return 0;
}