RosettaCodeData/Task/Perfect-numbers/Perl/perfect-numbers-7.pl

11 lines
245 B
Perl
Raw Permalink Normal View History

2017-09-23 10:01:46 +02:00
use ntheory qw(is_mersenne_prime valuation);
2016-12-05 22:15:40 +01:00
sub is_even_perfect {
my ($n) = @_;
2017-09-23 10:01:46 +02:00
my $v = valuation($n, 2) || return;
my $m = ($n >> $v);
($m & ($m + 1)) && return;
($m >> $v) == 1 || return;
is_mersenne_prime($v + 1);
2016-12-05 22:15:40 +01:00
}