大数
大数运算
1 using System;
2 using System.Numerics;
3
4 namespace ConsoleApplication1
5 {
6 class Program
7 {
8 static void Main(string[] args)
9 {
10 BigInteger tmp = BigInteger.Zero;
11 System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
12 sw.Start();
13 //tmp = Factorial(15100);
14 ForResult(99999);
15 sw.Stop();
16 Console.WriteLine(tmp.ToString().Length.ToString()+" "+sw.Elapsed.ToString());
17
18 }
19
20 /// <summary>
21 /// 使用递归
22 /// </summary>
23 /// <param name="i"></param>
24 /// <returns></returns>
25 public static System.Numerics.BigInteger Factorial(BigInteger i)
26 {
27 if (i < 0)
28 {
29 return BigInteger.Zero;
30 }
31 else if(0==i)
32 {
33 return 1;
34 }
35 else
36 return Factorial(i - 1) * i;
37 }
38
39 public static BigInteger ForResult(BigInteger i)
40 {
41 BigInteger tmp=1;
42 do
43 {
44 tmp *= i;
45 i--;
46 }
47 while (i > 0);
48 return tmp;
49 }
50
51 }
52 }
53
2 using System.Numerics;
3
4 namespace ConsoleApplication1
5 {
6 class Program
7 {
8 static void Main(string[] args)
9 {
10 BigInteger tmp = BigInteger.Zero;
11 System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
12 sw.Start();
13 //tmp = Factorial(15100);
14 ForResult(99999);
15 sw.Stop();
16 Console.WriteLine(tmp.ToString().Length.ToString()+" "+sw.Elapsed.ToString());
17
18 }
19
20 /// <summary>
21 /// 使用递归
22 /// </summary>
23 /// <param name="i"></param>
24 /// <returns></returns>
25 public static System.Numerics.BigInteger Factorial(BigInteger i)
26 {
27 if (i < 0)
28 {
29 return BigInteger.Zero;
30 }
31 else if(0==i)
32 {
33 return 1;
34 }
35 else
36 return Factorial(i - 1) * i;
37 }
38
39 public static BigInteger ForResult(BigInteger i)
40 {
41 BigInteger tmp=1;
42 do
43 {
44 tmp *= i;
45 i--;
46 }
47 while (i > 0);
48 return tmp;
49 }
50
51 }
52 }
53
-------------------------------------------------
!!!作者:木由水 http://www.cnblogs.com/muyoushui