Nombres amicaux et nombres parfaits

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 375 fois - Téléchargée 30 fois

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

Ajouter un commentaire

Commentaires

TeLeTUbIz
Messages postés
215
Date d'inscription
mercredi 30 juillet 2003
Statut
Membre
Dernière intervention
25 septembre 2010

LordBob => regarde bien, y'a un if avant. Dans le cas ou le if ne se fait pas, c'est ce qui suit qui est exécuté (ie: return false)

J'aime bien écrire ce truc ainsi: plutot que:
if(a==b)
return true;
return false;

on peut mettre:
return (a==b ? true : false);

Dommage le programme est très très lent et pas otpimisé.
cs_LordBob
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
9
dans t'es deux fonction estParfait et sontAmicaux tu ecrit return true et return false, c'est inutile d'ecrire les deux vu que seulement le premier est pris en compte !!!

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.