Jump to content

Perfect numbers: Difference between revisions

(Updated second D entry)
Line 1,454:
=={{header|Ruby}}==
<lang ruby>def perf(n)
sum = 0
for i in 1...n
sum += i if n % i == 0
end
sum += i
sum == endn
end
return sum == n
end</lang>
Functional style:
<lang ruby>def perf(n)
n == (1...n).select {|i| n % i == 0}.inject(:+)
end</lang>
Faster version:
<lang ruby>def perf(n)
divisors = []
for i in 1..Math.sqrt(n)
divisors << i << n/i if n % i == 0
end
divisors.uniq.inject(:+) == 2*n
end</lang>
Test:
<lang ruby>for n in 1..10000
puts n if perf(n)
end</lang>
{{out}}
<pre>
6
28
496
8128
</pre>
 
=={{header|Run BASIC}}==
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.