Un nombre parfait

Fermé
Elly - 25 oct. 2009 à 20:19
fxtaa Messages postés 1050 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 2 avril 2015 - 27 oct. 2009 à 09:56
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
25 oct. 2009 à 20:31
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 1050 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 2 avril 2015 74
26 oct. 2009 à 15:42
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 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
26 oct. 2009 à 18:36
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 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019
26 oct. 2009 à 18:46
Chapeau, l'artiste !
Bonne soirée.
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567 > loupius
26 oct. 2009 à 18:49
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 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192 > lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019
26 oct. 2009 à 22:39
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 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192
26 oct. 2009 à 17:50
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 1050 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 2 avril 2015 74
27 oct. 2009 à 09:56
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