Un nombre parfait

Elly -  
fxtaa Messages postés 1170 Statut Membre -
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.

4 réponses

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
fxtaa Messages postés 1170 Statut Membre 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
lami20j Messages postés 21644 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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
loupius > lami20j Messages postés 21644 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
 
Chapeau, l'artiste !
Bonne soirée.
0
lami20j Messages postés 21644 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570 > loupius
 
Salut,

Merci ;-)

Ben, j'avais envie de m'amuser un peu, après le retour du boulot.
Bonne soirée à toi ;-))
0
Nabla's Messages postés 20731 Statut Contributeur 3 194 > lami20j Messages postés 21644 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
Nabla's Messages postés 20731 Statut Contributeur 3 194
 
tiens, j'ai trouvé ceci dans les astuces de CCM qui conviendra parfaitement à ta demande:
https://www.commentcamarche.net/infos/25899-demander-de-l-aide-pour-vos-exercices-sur-ccm/

n'hésite pas à poser d'autres questions si tu comprends pas !
0
fxtaa Messages postés 1170 Statut Membre 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