Left factorials: Difference between revisions
Content added Content deleted
m (→{{header|Perl 6}}: remove surnumerary word) |
(Adding C# implementation) |
||
Line 149: | Line 149: | ||
mpz_clear(t); |
mpz_clear(t); |
||
return 0; |
return 0; |
||
} |
|||
</lang> |
|||
{{out}} |
|||
<pre> |
|||
!0 = 0 |
|||
!1 = 1 |
|||
!2 = 2 |
|||
!3 = 4 |
|||
!4 = 10 |
|||
!5 = 34 |
|||
!6 = 154 |
|||
!7 = 874 |
|||
!8 = 5914 |
|||
!9 = 46234 |
|||
!10 = 409114 |
|||
!20 = 128425485935180314 |
|||
!30 = 9157958657951075573395300940314 |
|||
!40 = 20935051082417771847631371547939998232420940314 |
|||
!50 = 620960027832821612639424806694551108812720525606160920420940314 |
|||
!60 = 141074930726669571000530822087000522211656242116439949000980378746128920420940314 |
|||
!70 = 173639511802987526699717162409282876065556519849603157850853034644815111221599509216528920420940314 |
|||
!80 = 906089587987695346534516804650290637694024830011956365184327674619752094289696314882008531991840922336528920420940314 |
|||
!90 = 16695570072624210767034167688394623360733515163575864136345910335924039962404869510225723072235842668787507993136908442336528920420940314 |
|||
!100 = 942786239765826579160595268206839381354754349601050974345395410407078230249590414458830117442618180732911203520208889371641659121356556442336528920420940314 |
|||
!110 = 145722981061585297004706728001906071948635199234860720988658042536179281328615541936083296163475394237524337422204397431927131629058103519228197429698252556442336528920420940314 |
|||
!1000 has 2565 digits |
|||
!2000 has 5733 digits |
|||
!3000 has 9128 digits |
|||
!4000 has 12670 digits |
|||
!5000 has 16322 digits |
|||
!6000 has 20062 digits |
|||
!7000 has 23875 digits |
|||
!8000 has 27749 digits |
|||
!9000 has 31678 digits |
|||
!10000 has 35656 digits |
|||
</pre> |
|||
=={{header|C sharp|C#}}== |
|||
<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 Factorial(int number) |
|||
{ |
|||
BigInteger accumulator = 1; |
|||
for (int factor = 1; factor <= number; factor++) |
|||
{ |
|||
accumulator *= factor; |
|||
} |
|||
return accumulator; |
|||
} |
|||
private static BigInteger LeftFactorial(int n) |
|||
{ |
|||
BigInteger result = 0; |
|||
for (int i = 0; i < n; i++) |
|||
{ |
|||
result += Factorial(i); |
|||
} |
|||
return result; |
|||
} |
|||
} |
|||
} |
} |
||
</lang> |
</lang> |