Kaprekar numbers: Difference between revisions

Improved D code
(Improved second D version, from the C version)
(Improved D code)
Line 151:
bool isKaprekar(in long n)
in {
assert(n > 0, "isKaprekar(n) is defined for n > 0.");
} body {
if (n == 1)
Line 174:
<pre>[1, 9, 45, 55, 99, 297, 703, 999, 2223, 2728, 4879, 4950, 5050, 5292, 7272, 7777, 9999]
54</pre>
===Lower leverlevel version, more than ten times faster (same output):===
 
More than ten times faster (same output):
<lang d>import std.stdio, std.algorithm, std.range;
 
pure nothrow bool isKaprekar(in ulong n)
in {
assert(n > 0, "isKaprekar(n) is defined for n > 0.");
assert(n <= 3_162_277_660UL, "isKaprekar(n) overflow.");
} body {
immutable ulong nn = n * n;
Anonymous user