fork download
  1. using System;
  2. using System.Diagnostics;
  3.  
  4. public class Test
  5. {
  6. public static void Main()
  7. {
  8. Console.WriteLine("Original");
  9. Console.WriteLine(Original());
  10. Console.WriteLine(TimeCalcOriginal());
  11. Console.WriteLine("PI4");
  12. Console.WriteLine(PI4());
  13. Console.WriteLine(TimeCalcPI4());
  14. Console.ReadKey();
  15. }
  16.  
  17. public static decimal PI4()
  18. {
  19. decimal pi = 4m, iteration = 3m, piAvg;
  20. do
  21. {
  22. pi = Decimal.Subtract(pi, Decimal.Divide(4m, iteration));
  23. piAvg = pi;
  24. iteration = decimal.Add(iteration, 2m);
  25. pi = Decimal.Add(pi, Decimal.Divide(4m, iteration));
  26. piAvg = Decimal.Divide(Decimal.Add(pi, piAvg), 2m);
  27. iteration = decimal.Add(iteration, 2m);
  28. if(decimal.Add(iteration, 1m) % 100000m == 0) {
  29. Debug.WriteLine(piAvg);
  30. }
  31. } while (Decimal.Round(piAvg, 5) != 3.14159m);
  32. //} while (Decimal.Round(piAvg, 10) != 3.1415926536m); //3.1415926535897932384626433833
  33. return Decimal.Round(piAvg, 10);
  34. }
  35.  
  36. public static decimal Original()
  37. {
  38. decimal number = 0m;
  39. decimal pi;
  40. int i = 1;
  41.  
  42. do
  43. {
  44. if ((i / 2) % 2 == 0)
  45. {
  46. number += 1m / i;
  47. }
  48. else
  49. {
  50. number -= 1m / i;
  51. }
  52. pi = 4 * number;
  53. i += 2;
  54. } while (Decimal.Round(pi, 5) != 3.14159m);
  55. return (Decimal.Round(pi, 5));
  56. }
  57.  
  58. public static System.TimeSpan TimeCalcOriginal()
  59. {
  60. Stopwatch sw = new Stopwatch();
  61. sw.Start();
  62. for (int i = 0; i <= 50; i++)
  63. {
  64. Original();
  65. }
  66. sw.Stop();
  67. return sw.Elapsed;
  68. }
  69.  
  70. public static System.TimeSpan TimeCalcPI4()
  71. {
  72. Stopwatch sw = new Stopwatch();
  73. sw.Start();
  74. for (int i = 0; i <= 50; i++)
  75. {
  76. PI4();
  77. }
  78. sw.Stop();
  79. return sw.Elapsed;
  80. }
  81. }
Success #stdin #stdout 2.05s 131776KB
stdin
Standard input is empty
stdout
Original
3.14159
00:00:02.0004577
PI4
3.1415850540
00:00:00.0042330