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