Perfect numbers: Difference between revisions
Content added Content deleted
m (→{{header|AppleScript}}: updated primitives) |
m (→Modules: simpler and more efficient code) |
||
Line 1,823: | Line 1,823: | ||
In addition to generating even perfect numbers, we can also have a fast function which returns true when a given even number is perfect: |
In addition to generating even perfect numbers, we can also have a fast function which returns true when a given even number is perfect: |
||
<lang perl>use ntheory qw(is_mersenne_prime valuation |
<lang perl>use ntheory qw(is_mersenne_prime valuation); |
||
sub is_even_perfect { |
sub is_even_perfect { |
||
my ($n) = @_; |
my ($n) = @_; |
||
⚫ | |||
$ |
my $m = ($n >> $v); |
||
($m & ($m + 1)) && return; |
|||
($m >> $v) == 1 || return; |
|||
is_mersenne_prime($v + 1); |
|||
⚫ | |||
my $k = (sqrtint($square) + 1) / 2; |
|||
hammingweight($k) == 1 && is_mersenne_prime(valuation($k, 2)); |
|||
}</lang> |
}</lang> |
||