Deux nombres amis
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

Deux nombres amis



  1. #1
    invite9f95f6e7

    Deux nombres amis


    ------

    salut j ai besoin de votre aide svplé
    je veux ecrire un programme qui vérifie si deux nombres sont amis

    A est ami de B si la somme des diviseurs de A est égal à B.
    exemple: prenant 220 ET 284

    Code:
    Code HTML:
          
                    scanf("%d %d",&A,&B);//soit A et B deux nombres
    
                       for(i=1;i<A;i++)//pour i allant de 1 à A-1
    
                       {
                           if(A %i==0)//  si le reste de la division de A par i est egal à zero 
                           
                           sdiv=sdiv+i;
                       
                       }
    
                      for (i=0;i<B;i++)
                      {
    
                          if(B%2==0)
    
                          smdiv=smdiv+i;
    
                        }
    
                       if (sdiv==B || smdiv==A)
                            //si la somme des diviseurs de A est égal à B et la somme des diviseurs de B est égal à A                                                           
    
                       printf("amis");//si c vrai alors A et B sont amis
    
                       else//sinon
    
                       printf("ne sont pas amis ");//A et B ne sont pas amis
    
                       getch();
                       }//fin du programme


    merci de m avoir aidée , à vrai dire je ne trouve pas mon erreur mais j arrive pas à l executé

    -----

  2. #2
    invite9f95f6e7

    Re : Deux nombres amis

    PS : au lieu de (B%2==0) je dois ecrire (B%i==0)

  3. #3
    invite4492c379

    Re : Deux nombres amis

    Hello,

    pas la peine de mettre des balises HTML à l'intérieur des balises CODE. Par contre poster tout le code peut-être intéressant, si c'est un peu long, tu entourer le bloc CODE avec des balises SPOILER.
    Par exemple (pour voir comment j'ai fait clique sur Répondre avec citation)

     Cliquez pour afficher


    Une remarque générale : pour trouver les erreurs dans un code, il est parfois plus simple (en tout cas beaucoup plus rapide et utile) de débuguer ton code grâce à un debugueur. La maîtrise d'un débugueur est indispensable quand tu programmes.

    Une remarque sur la définition : deux nombres A et B sont dits amis ssi la somme des diviseurs propres de A vaut B et la somme des diviseurs propres de B vaut A.
    Comment fait-on un et sur deux conditionnelles en C ?
    Attention au test de divisibilité.

    Une remarque sur l'algorithme utilisé : ok l'idée est là. Mais, je t'ai déjà dit dans d'autres fils que tu peux optimiser un peu ...

    Un nombre A n'a aucun diviseur dans ]A/2;A[
    En fait une boucle optimale ne testerait que les entiers entre 1 et A1/2... comme une remarque que j'avais pu te faire dans un fil sur les nombres premiers

    Si la somme des diviseurs propres de A ne vaut pas B, A et B ne peuvent être amis donc ce n'est pas la peine de calculer la somme des diviseurs propres de B.

    Il est préférable d'utiliser des variables dont le nom est explicite, tu peux vite confondre sdiv et smdiv (sans compter les fautes de frappe difficiles à retrouver sans debugueur). Il aurait été judicieux de les nommer smDiviseursA et smDiviseursB ... beaucoup plus lisible et compréhensible.

  4. #4
    invite4492c379

    Re : Deux nombres amis

    Citation Envoyé par dalida1111 Voir le message
    PS : au lieu de (B%2==0) je dois ecrire (B%i==0)
    Ce n'est pas la seule erreur.

  5. A voir en vidéo sur Futura
  6. #5
    invite9f95f6e7

    Re : Deux nombres amis

    Merci pour la réponse et excuse moi pour le retard car je vis depuis 4 jours sans electricité et sans connexion ,
    bref, j'ai modifié mon programme mais lorque je le teste en C ca donne tjr le meme résultats ( que" les deux nombre ne sont pas amis ")

     Cliquez pour afficher


    Merci

  7. #6
    invite4492c379

    Re : Deux nombres amis

    Hello,

    indenter le code le rend plus lisible ...

    plusieurs remarques :

    * essaye d'afficher la valeur de sdiviseurA après ta boucle, est-elle correcte ?
    * il te manque la moitié du code ... une fois la remarque précédente prise en compte, essaye, par exemple avec A=8 (somme des div = 1+2+4=7) et B=7 (somme des div=1)

    * écrire une fonction int SommeDiviseurs(int n) qui te renvoie la somme des diviseurs du paramètre n te simplifierait la vie ...

  8. #7
    invite9f95f6e7

    Re : Deux nombres amis

    Merci c fait j 'ai pu l excecuter
    j 'ai initialisé sdiviseurA par 0 et j ai affiché la somme des diviseurs de A aprés la boucle for ( pour i allant de 1 à <A) ...si on prend A=220 et B=284 , la somme des diviseurs de A vaut 284 .ca donne ds nombres amis

Discussions similaires

  1. comparaison de deux nombres
    Par invite1e0e557e dans le forum Mathématiques du collège et du lycée
    Réponses: 5
    Dernier message: 15/05/2010, 13h50
  2. Comparer deux nombres
    Par inviteb3cc9f06 dans le forum Mathématiques du collège et du lycée
    Réponses: 12
    Dernier message: 01/01/2010, 09h27
  3. Comparer deux nombres
    Par invitec56065da dans le forum Mathématiques du collège et du lycée
    Réponses: 6
    Dernier message: 09/11/2008, 17h13
  4. Pgcd de deux nombres entiers
    Par inviteea59665a dans le forum Mathématiques du collège et du lycée
    Réponses: 4
    Dernier message: 27/12/2006, 20h07
  5. Somme de deux nombres cardinaux
    Par invite362d98ed dans le forum Mathématiques du supérieur
    Réponses: 6
    Dernier message: 27/12/2006, 10h38