Nombres amicaux et nombres parfaits

Contenu du snippet

recherche des nombres amicaux et des nombres parfaits

Source / Exemple :


/***************************************************************

  • Auteur : Ahmed ERRAMI *
  • e-mail : errami_ahmed@yahoo.fr *
  • Ce programme permet de rechercher les nombres parfaits et les*
  • couples de nombres amicaux appartenant a l intervalle *
  • [1,NbMax]. *
  • Un nombre est parfait s il est egal a la somme de ses *
  • diviseurs propres. *
  • Deux nombres sont amicaux si la somme des diviseurs propres *
  • de l un est egale a celle de l autre. *
  • Ces definitions sont detaillees sur le site internet *
  • http://www.sciences-en-ligne.com/momo/chronomath/accueil.htm *
                                                                                                                                • /
#include<stdio.h> // Pour printf #define NbMax 1000 //Les nombres recherchés sont dans [1,NbMax] class CNombre { int nbre; //Nombre à analyser int somDivPropres; //Somme de ses diviseurs propres public: CNombre(int nb); //Constructeur int lire_nbre(){return nbre;} int lire_somDivPropres(){return somDivPropres;} }; CNombre::CNombre(int nb) { nbre=nb; somDivPropres=0; for(int i=1;i<=nbre/2;i++) //Calcul de somDivPropres { if(nbre%i==0) somDivPropres+=i; } } bool estParfait(int); bool sontAmicaux(int,int); void main() { int nbre; //Nombre à analyser s'il est parfait for(nbre=1;nbre<NbMax;nbre++) { if(estParfait(nbre)) printf("le nombre %d est parfait\n",nbre); } for(int i=1;i<NbMax;i++) { for(int j=1;j<=i;j++) { if(sontAmicaux(i,j)) printf("les nombres (%d,%d) sont amicaux\n",i,j); } } } bool estParfait(int unEntier) { CNombre nombre(unEntier); if(nombre.lire_nbre()==nombre.lire_somDivPropres()) return true; return false; } bool sontAmicaux(int nb1,int nb2) { CNombre nombre1(nb1); CNombre nombre2(nb2); if(nb1==nombre2.lire_somDivPropres() && nb2==nombre1.lire_somDivPropres()) return true; return false; }

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.