Left factorials: Difference between revisions
Content deleted Content added
Adding C# implementation |
m →{{header|C sharp|C#}}: Adding a faster implementation |
||
Line 275: | Line 275: | ||
!10000 has 35656 digits |
!10000 has 35656 digits |
||
</pre> |
</pre> |
||
Faster Implementation |
|||
<lang csharp> |
|||
using System; |
|||
using System.Numerics; |
|||
namespace LeftFactorial |
|||
{ |
|||
class Program |
|||
{ |
|||
static void Main(string[] args) |
|||
{ |
|||
for (int i = 0; i <= 10; i++) |
|||
{ |
|||
Console.WriteLine(string.Format("!{0} : {1}", i, LeftFactorial(i))); |
|||
} |
|||
for (int j = 20; j <= 110; j += 10) |
|||
{ |
|||
Console.WriteLine(string.Format("!{0} : {1}", j, LeftFactorial(j))); |
|||
} |
|||
for (int k = 1000; k <= 10000; k += 1000) |
|||
{ |
|||
Console.WriteLine(string.Format("!{0} : has {1} digits", k, LeftFactorial(k).ToString().Length)); |
|||
} |
|||
Console.ReadKey(); |
|||
} |
|||
private static BigInteger LeftFactorial(int n) |
|||
{ |
|||
BigInteger result = 0; |
|||
BigInteger subResult = 1; |
|||
for (int i = 0; i < n; i++) |
|||
{ |
|||
if (i == 0) |
|||
{ |
|||
subResult = 1; |
|||
} |
|||
else |
|||
{ |
|||
subResult *= i; |
|||
} |
|||
result += subResult; |
|||
} |
|||
return result; |
|||
} |
|||
} |
|||
} |
|||
</lang> |
|||
=={{header|D}}== |
=={{header|D}}== |