Evaluate binomial coefficients: Difference between revisions

Updated D entry
(Updated D entry)
Line 325:
=={{header|D}}==
<lang d>import std.stdio, std.bigint;
 
T binomial(T)(/*in*/ T n, T k) /*pure nothrow*/ {
if (k > (n / 2))
k = n - k;
T bc = 1;
//foreach (T i; 1cast(T)2 .. k + 1)
for (T i = 2; i <= k; i++)
bc = (bc * (n - k + i)) / i;
return bc;
}
 
void main() {
foreach (d; [[5, 3], [100, 2], [100, 98]])
writefln("(%3d %3d) = %s", d[0], d[1], binomial(d[0], d[1]));
writeln("(100 50) = ", binomial(BigInt(100), BigInt(50)));
}</lang>
{{out}}
Output:
<pre>( 5 3) = 102
(100 2) = 495050
(100 98) = 495050
(100 50) = 1008913445455641933348124972561976664223067613962806675336</pre>
 
=={{header|Delphi}}==