Nombre parfait

shiloh -  
kelsett Messages postés 376 Statut Membre -
Bonjour, j'aimerais créer un algorithme qui me permettra de dire qu'un nombre est parfait ou non.Mais, je ne sais pas comment s'y prendre.Aider-moi.

1 réponse

  1. kelsett Messages postés 376 Statut Membre 62
     
    Vas au plus simple...
    En sachant qu'un nombre n est parfait si 2^x(2^(x+1)-1) = n, tu fais une boucle tu les essaies jusqu'à ce que tu trouves...

    En gros ca donnerait quelque chose comme:

    int x = 8128;    
    bool parfait = false;    
    
    for (int i = 1; i<=x; i++) {    
        if (2^i(2^(i+1)-1) == x)    
            parfait = true;    
    }    
    
    if (parfait = true) Console.WriteLine("Le nombre " + x + " est parfait");    
    else Console.WriteLine("Le nombre " + x + " n'est pas parfait");


    Ca c'est en C#, à traduire dans ton langage. C'est pas très beau de tous les essayer jusqu'à trouver, mais bon si tu veux faire simple...

    EDIT: ptite faute de ma part, je viens de me rappeler qu'il n'existait rien pour faire les puissances en C# (ni en aucun autre langage à ma connaissance) donc il faut créer une fonction exprès pour le faire... un peu d'aide ici: https://codes-sources.commentcamarche.net/
    1
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      @kelsett
      je viens de me rappeler qu'il n'existait rien pour faire les puissances en C#
      Je connais pas le langage, mais il y a la fonction qui existe déjà (pas besoin donc d'en créer une autre) : Math.pow(...)
      ni en aucun autre langage à ma connaissance
      En C, il y a pow, en java, ça existe aussi. En python, c'est natif : 5**2 donne 25.
      Et j'en passe.

      Cdlt,
      0
    2. kelsett Messages postés 376 Statut Membre 62
       
      @jisisv
      Hehe, oui mais ceci étant dit, lis ce qu'il y a écrit pour les nombres parfaits impairs... "En 2009, les mathématiciens ignorent si des nombres parfaits impairs existent"... ;)

      @fiddy
      Ok, merci pour l'info, je ne savais pas.
      0