Exemple #1
0
 /// <summary>
 /// Bit of an optimisation here. The first 1000 fibonacci numbers never change, no point recalculating them, so use a cache.
 /// </summary>
 /// <param name="number"></param>
 private void PrintIfFib(BigInteger number)
 {
     if (fibonacciTable.Contains(number))
     {
         Console.WriteLine("FIB!");
     }
 }
Exemple #2
0
        public void TestBigInteger()
        {
            var fibNMinus2 = new BigInteger(0);
            var fibNMinus1 = new BigInteger(1);
            var sw         = new Stopwatch();

            sw.Start();
            var ft = new FibonacciTableBigInteger();

            sw.Stop();
            Console.WriteLine($"FTBI1: {sw.Elapsed}");
            Console.WriteLine($"{0}: {fibNMinus2}");
            Console.WriteLine($"{1}: {fibNMinus1}");
            sw.Restart();
            for (int i = 2; i <= 1000; i++)
            {
                var fibN = fibNMinus2 + fibNMinus1;
                Console.WriteLine($"{i}: {fibN}");
                Assert.IsTrue(ft.Contains(fibN));
                fibNMinus2 = fibNMinus1;
                fibNMinus1 = fibN;
            }
            sw.Stop();
            Console.WriteLine($"FTBI2: {sw.Elapsed}");
        }