Beispiel #1
0
        public static BigFraction AddFraction(BigFraction a, BigFraction b)
        {
            List <int> t1  = DigitsList.Product(a.Numerator, b.Denominator);
            List <int> t2  = DigitsList.Product(b.Numerator, a.Denominator);
            var        num = DigitsList.Sum(t1, t2);
            var        dem = DigitsList.Product(a.Denominator, b.Denominator);

            return(new BigFraction {
                Numerator = num, Denominator = dem
            });
        }
        public bool IsLychrelNumber(long number)
        {
            bool       isPalindrome      = false;
            int        numberOfIteration = 0;
            List <int> digits            = DigitsList.ConvertToDigitListe(number);

            while (!isPalindrome && numberOfIteration < 50)
            {
                digits = DigitsList.Sum(digits, DigitsList.ReverseCopy(digits));

                isPalindrome = Palindrome.IsPalindrome(digits);
                numberOfIteration++;
            }
            return(!isPalindrome);
        }
Beispiel #3
0
        public string GetSum(string[] stringArray)
        {
            List <int> sumNumbers = stringArray[0].ToCharArray().Reverse().Select(c => Convert.ToInt32(c - '0')).ToList();

            //skip first, used in init above..
            foreach (var s in stringArray.Skip(1))
            {
                List <int> nextNumber = s.ToCharArray().Reverse().Select(c => Convert.ToInt32(c - '0')).ToList();
                sumNumbers = DigitsList.Sum(nextNumber, sumNumbers);
            }

            //lag string ut fra int array , snu tallene
            StringBuilder builder = new StringBuilder();

            sumNumbers.TakeLast(10).Reverse().ToList().ForEach(s => builder.Append(s.ToString()));
            return(builder.ToString());
        }
        public bool NumeratorHasMoreDigitsThanDenominator(int iterationNumber)
        {
            /*
             *   1 + 1/(2 + 1/2..)
             *   1+ 1/seriesum
             *
             * seriesum=t/n
             * seriesum=2 +1/seriesum = 2+1/(t/n)=2+n/t=(2*t+n)/t
             *
             */

            List <int> teller = new List <int> {
                2
            };
            List <int> nevner = new List <int> {
                1
            };

            //seriesum=t/n = 2

            while (iterationNumber > 1)
            {
                // (2*t+n)/t

                //2*t
                //       List<int> a = DigitsList.Product(teller, 2);

                //2*t+n
                var tmp2 = DigitsList.Sum(DigitsList.Product(teller, 2), nevner);
                // /t
                nevner = teller;
                teller = tmp2;

                iterationNumber--;
            }

            //1 + 1 / seriesum
            // 1 +1/(t/n) = (n+t)/t
            var tmp = teller;

            teller = DigitsList.Sum(nevner, teller);
            nevner = tmp;

            //finn all siffer i teller og nevner
            return(teller.Count > nevner.Count);
        }
Beispiel #5
0
        public long GetLastTenDigits(int topower)
        {
            List <int> digitlist = new List <int>();

            for (int i = 1; i <= topower; i++)
            {
                List <int> liste = DigitsList.ConvertToDigitListe(i);

                for (int j = 2; j <= i; j++)
                {
                    liste = DigitsList.Product(liste, MaxDigits, i);
                }

                digitlist = DigitsList.Sum(digitlist, liste);
            }

            return(DigitsList.ConvertToNumberLong(digitlist.Take(MaxDigits).ToList()));
        }
Beispiel #6
0
        public long GetIndexOfFirstTerm(int numberOfdigits)
        {
            List <int> fn1 = new List <int>()
            {
                1
            };
            List <int> fn2 = new List <int>()
            {
                1
            };

            int IndexOfTerm = 2;

            while (fn2.Count < numberOfdigits)
            {
                var fnext = DigitsList.Sum(fn1, fn2);
                fn1 = fn2;
                fn2 = fnext;
                IndexOfTerm++;
            }

            return(IndexOfTerm);
        }