Un nombre parfait

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

  • Votes
  • Date
  • Date décroissante
  1. 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
    1. 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
      1. Modérateur
        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
        
      2. Modérateur
        @loupiusSalut,

        Merci ;-)

        Ben, j'avais envie de m'amuser un peu, après le retour du boulot.
        Bonne soirée à toi ;-))
      3. Contributeur
        @lami20jil 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)
    2. 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