Un nombre parfait

Elly -  
fxtaa Messages postés 1050 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
ma question sur:
-ecrire algo qui lit un entier (+) et détermine s'il est parfait ou non.
-ecrire algo qui affiche la liste de tous les nombres parfaits inférieurs à 200
exple : 6=1+2+3 donc 6 est un nombre parfait.
Configuration: Windows XP
Firefox 3.5.3

4 réponses

  1. Utilisateur anonyme
     
    Un petit coup de téléphone là : Albert Einstein
    --

    On n'a rien inventé de mieux que la bêtise pour se croire intelligent.
    Cordialement Jacqus93
    0
  2. fxtaa Messages postés 1050 Date d'inscription   Statut Membre Dernière intervention   74
     
    salut,

    tiens en perl :

    =pod
    contenu de prems.txt 
    2
    3
    5
    7
    11
    13
    17
    19
    23
    29
    31
    37
    41
    43
    47
    53
    59
    61
    67
    71
    73
    79
    83
    89
    =cut
    
    use warnings;
    use diagnostics;
    my $r=0;
    my $rep = "REP OU SE TROUVE prems.txt";
    
    @lignes = ("");
    open(FILE, "<$rep\\prems.txt");
    while(<FILE>){
             push(@lignes,$_);
    }
    close(FILE);
    
    for(@lignes){
       
    	$p = $_;
    	$p =~ s/\n//g;
    	$r = (2**($p-1))*((2**$p)-1); #(2^(p-1))x((2^p)-1)
    		
    	print "$r\n";	
    	
    	last if ($r>200)
    }


    Bonne journée
    0
    1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      Salut,

      J'ai comprimé un peut ton code dans trois versions ;-)

      Version 1

      #!/usr/bin/perl
      use strict;use warnings;
      
      my @nr_parfait = ();
      
      while(<DATA>){
        my $r= (2**($_-1))*((2**$_)-1);
        push @nr_parfait,$r unless $r>200;
      }
      print $_,"\n" for @nr_parfait;
      
      __END__
      2
      3
      5
      7
      11
      13
      17
      19
      23
      29
      31
      37
      41
      43
      47
      53
      59
      61
      67
      71
      73
      79
      83
      89
      


      Version 2

      #!/usr/bin/perl
      use strict;use warnings;
      
      my @nr_parfait=map {(2**($_-1))*((2**$_)-1)} <DATA>;
      print $_,"\n" for grep {$_<200} @nr_parfait;
      
      __END__
      2
      3
      5
      7
      11
      13
      17
      19
      23
      29
      31
      37
      41
      43
      47
      53
      59
      61
      67
      71
      73
      79
      83
      89
      


      Version 3

      #!/usr/bin/perl
      use strict;use warnings;
      
      print $_,"\n" for grep {$_<200} map {(2**($_-1))*((2**$_)-1)} <DATA>;
      
      __END__
      2
      3
      5
      7
      11
      13
      17
      19
      23
      29
      31
      37
      41
      43
      47
      53
      59
      61
      67
      71
      73
      79
      83
      89
      
      0
      1. loupius > lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
         
        Chapeau, l'artiste !
        Bonne soirée.
        0
      2. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571 > loupius
         
        Salut,

        Merci ;-)

        Ben, j'avais envie de m'amuser un peu, après le retour du boulot.
        Bonne soirée à toi ;-))
        0
      3. Nabla's Messages postés 18201 Date d'inscription   Statut Contributeur Dernière intervention   3 228 > lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
         
        il faut vraiment que je m'interesse au pearl un de ces 4... c'est un langage qui me semble très énigmatique (je suis plutot sur la famille C++ et ses dérivés)
        0
  3. fxtaa Messages postés 1050 Date d'inscription   Statut Membre Dernière intervention   74
     
    print $_,"\n" for grep {$_<200} map {(2**($_-1))*((2**$_)-1)} <DATA>;
    


    c est propre... bon je vais voir ce que c est que cette fonction map
    0