Perfect numbers: Difference between revisions

m
m (→‎{{header|Sidef}}: added a faster check for even perfect numbers)
m (→‎{{header|Sidef}}: updated code)
Line 2,399:
}
100010000.times { |i|
is_perfect(i) && say i;
}</lang>
{{out}}
<pre>
28
496
</pre>
 
A much faster check for even perfect numbers:
<lang ruby>func is_even_perfect(n) {
var p = 2
 
var psquare = 2(8*n + 1)
loop {
square.is_sqr || return false
var mp = (1<<p - 1)
var np = (mp * (mp+1) / 2)
 
var tp = ((square.isqrt np+ >1) n/ && return false2)
tp.is_pow || return false
 
if (mptp-1).is_prime &&? np==n)true : {false
return true
}
 
p.next_prime!
}
}
 
for i in range(0, 10000, 2) {
10000.times { |i|
is_even_perfect(i) && say i
}</lang>
 
{{out}}
<pre>
28
496
8128
</pre>
 
=={{header|Slate}}==
2,747

edits