Multifactorial: Difference between revisions

Added implementation in C#.
(Added implementation in C#.)
Line 87:
Degree 5: 1 2 3 4 5 6 14 24 36 50
</pre>
 
=={{header|C sharp}}==
<lang csharp>namespace RosettaCode.Multifactorial
{
using System;
using System.Linq;
 
internal static class Program
{
private static void Main()
{
Console.WriteLine(string.Join(Environment.NewLine,
Enumerable.Range(1, 5)
.Select(
degree =>
string.Join(" ",
Enumerable.Range(1, 10)
.Select(
number =>
Multifactorial(number, degree))))));
}
 
private static int Multifactorial(int number, int degree)
{
if (degree < 1)
{
throw new ArgumentOutOfRangeException("degree");
}
 
var count = 1 + (number - 1) / degree;
if (count < 1)
{
throw new ArgumentOutOfRangeException("number");
}
 
return Enumerable.Range(0, count)
.Aggregate(1, (accumulator, index) => accumulator * (number - degree * index));
}
}
}</lang>
Output:
<pre>1 2 6 24 120 720 5040 40320 362880 3628800
1 2 3 8 15 48 105 384 945 3840
1 2 3 4 10 18 28 80 162 280
1 2 3 4 5 12 21 32 45 120
1 2 3 4 5 6 14 24 36 50</pre>
 
=={{header|C++}}==
Anonymous user