Perfect numbers: Difference between revisions

Content added Content deleted
(Updated both D entries)
Line 366: Line 366:


void main() {
void main() {
writeln(filter!isPerfectNumber(iota(33_550_337)));
iota(10_000).filter!isPerfectNumber().writeln();
}</lang>
}</lang>
{{out}}
Output:
<pre>[6, 28, 496, 8128]</pre>
With a iota(33_550_337) it outputs:
<pre>[6, 28, 496, 8128, 33550336]</pre>
<pre>[6, 28, 496, 8128, 33550336]</pre>
===Functional Style===
===Functional Style===
Same output.
<lang d>import std.stdio, std.algorithm, std.range;
<lang d>import std.stdio, std.algorithm, std.range;


bool isPerfect(in int n) {
bool isPerfect(in int n) /*pure nothrow*/ {
return n == reduce!((s, i) => n % i ? s : s+i)(iota(1, n-1));
return n == iota(1, n - 1).reduce!((s, i) => n % i ? s : s + i)();
}
}


void main() {
void main() {
writeln(filter!isPerfect(iota(3, 10_000)));
iota(3, 10_000).filter!isPerfect().writeln();
}</lang>
}</lang>
Output:
<pre>[6, 28, 496, 8128]</pre>


=={{header|E}}==
=={{header|E}}==