示例#1
0
        public void Problem41()
        {
            string        numberToPerm = "1";
            List <string> permutations = new List <string>();

            for (int i = 1; i < 9; i++)
            {
                int j = i + 1;
                numberToPerm += j;
                EulerHelperFunctions.GetPermutations(numberToPerm.ToCharArray(), numberToPerm.Length, permutations);
            }

            long largestPandigital = 0;

            foreach (long number in permutations.ConvertAll(x => Int64.Parse(x)).OrderByDescending(x => x))
            {
                if (EulerHelperFunctions.IsPrime(number))
                {
                    largestPandigital = number;
                    return;
                }
            }

            Assert.Equal(7652413, largestPandigital);
        }
示例#2
0
        public void Problem6()
        {
            long sumOfSquares = EulerHelperFunctions.SumOfSquares(100);
            long squareOfSums = EulerHelperFunctions.SquareOfSums(100);

            Assert.Equal(25164150, squareOfSums - sumOfSquares);
        }
示例#3
0
        public void Problem10()
        {
            List <long> numbersList = EulerHelperFunctions.CreateListOfNumbers(2000000);
            List <long> primes      = EulerHelperFunctions.GetPrimeNumbers(numbersList);

            Assert.Equal(142913828922, primes.Sum());
        }
示例#4
0
        public void Problem3()
        {
            List <long> factors = EulerHelperFunctions.GetAllFactors(600851475143);
            List <long> primes  = EulerHelperFunctions.GetPrimeNumbers(factors);

            Assert.Equal(6857, primes.Max());
        }
示例#5
0
        public void Problem1()
        {
            int maxNumber = 1000;

            int[] factors = new int[] { 3, 5 };
            Assert.Equal(233168, EulerHelperFunctions.GetMultiples(maxNumber, factors).Sum());
        }
示例#6
0
        public void Problem24()
        {
            string        numberToPerm = "0123456789";
            List <string> permutations = new List <string>();

            EulerHelperFunctions.GetPermutations(numberToPerm.ToCharArray(), numberToPerm.Length, permutations);

            Assert.Equal("2783915460", permutations.OrderBy(x => x).Skip(999999).First());
        }
示例#7
0
        public void Problem5()
        {
            long number = 1;

            long[] factors = new long[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 };
            while (!EulerHelperFunctions.IsMultipleOfAllFactor(number, factors))
            {
                number++;
            }

            Assert.Equal(232792560, number);
        }
示例#8
0
        public void Problem21()
        {
            var sum = 0;

            for (int i = 1; i < 10000; i++)
            {
                if (EulerHelperFunctions.IsAmicable(i))
                {
                    sum = sum + i;
                }
            }

            Assert.Equal(31626, sum);
        }
示例#9
0
        public void Problem12()
        {
            long        n = 1;
            long        nthTriangularNumber = 1;
            List <long> factors             = EulerHelperFunctions.GetAllFactors(nthTriangularNumber);

            while (factors.Count <= 500)
            {
                n++;
                nthTriangularNumber += n;
                factors              = EulerHelperFunctions.GetAllFactors(nthTriangularNumber);
            }

            Assert.Equal(76576500, nthTriangularNumber);
        }
示例#10
0
        public void Problem14()
        {
            long startNumberForLongestSequence = 0;
            long maxLength = 1;

            for (long i = 1; i <= 1000000; i++)
            {
                long newLength = EulerHelperFunctions.GenerateCollatzSequence(i).Count();

                if (newLength > maxLength)
                {
                    maxLength = newLength;
                    startNumberForLongestSequence = i;
                }
            }

            Assert.Equal(837799, startNumberForLongestSequence);
        }
示例#11
0
        public void Problem7()
        {
            long number  = 2;
            long counter = 1;
            long prime   = number;

            while (counter <= 10001)
            {
                if (EulerHelperFunctions.IsPrime(number))
                {
                    counter++;
                    prime = number;
                }

                number++;
            }

            Assert.Equal(104743, prime);
        }
示例#12
0
        public void Problem4()
        {
            long minNumber         = 100;
            long maxNumber         = 999;
            long largestPalindrome = 0;

            for (long i = minNumber; i <= maxNumber; i++)
            {
                for (long j = minNumber; j < maxNumber; j++)
                {
                    largestPalindrome =
                        (i * j > largestPalindrome && EulerHelperFunctions.IsPalindrome((i * j).ToString()))
                            ? i * j
                            : largestPalindrome;
                }
            }

            Assert.Equal(906609, largestPalindrome);
        }
示例#13
0
        public void Problem9()
        {
            int cMax    = 998;
            int product = 0;

            for (int a = 1; a <= cMax - 2; a++)
            {
                for (int b = a + 1; b <= cMax - 1; b++)
                {
                    for (int c = b + 1; c <= cMax; c++)
                    {
                        if (EulerHelperFunctions.IsPythagoreanTriplet((long)a, (long)b, (long)c) && a + b + c == 1000)
                        {
                            product = a * b * c;
                            return;
                        }
                    }
                }
            }

            Assert.Equal(31875000, product);
        }
示例#14
0
        public void Problem8()
        {
            string thousandDigitNumber =
                "73167176531330624919225119674426574742355349194934" +
                "96983520312774506326239578318016984801869478851843" +
                "85861560789112949495459501737958331952853208805511" +
                "12540698747158523863050715693290963295227443043557" +
                "66896648950445244523161731856403098711121722383113" +
                "62229893423380308135336276614282806444486645238749" +
                "30358907296290491560440772390713810515859307960866" +
                "70172427121883998797908792274921901699720888093776" +
                "65727333001053367881220235421809751254540594752243" +
                "52584907711670556013604839586446706324415722155397" +
                "53697817977846174064955149290862569321978468622482" +
                "83972241375657056057490261407972968652414535100474" +
                "82166370484403199890008895243450658541227588666881" +
                "16427171479924442928230863465674813919123162824586" +
                "17866458359124566529476545682848912883142607690042" +
                "24219022671055626321111109370544217506941658960408" +
                "07198403850962455444362981230987879927244284909188" +
                "84580156166097919133875499200524063689912560717606" +
                "05886116467109405077541002256983155200055935729725" +
                "71636269561882670428252483600823257530420752963450";

            int  lengthOfNumber = 13;
            long sum            = 0;

            while (thousandDigitNumber.Length > 13)
            {
                string extractedNumber = thousandDigitNumber.Substring(0, lengthOfNumber);
                long   currentSum      = EulerHelperFunctions.ProductIndividualDigitsInString(extractedNumber);
                sum = currentSum > sum ? currentSum : sum;

                thousandDigitNumber = thousandDigitNumber.Remove(0, 1);
            }

            Assert.Equal(23514624000, sum);
        }
示例#15
0
        public void Problem20()
        {
            string factorialAsString = ((BigInteger)EulerHelperFunctions.Factorial(100)).ToString();

            Assert.Equal(648, EulerHelperFunctions.SumIndividualDigitsInString(factorialAsString));
        }
示例#16
0
        public void Problem16()
        {
            string powerAsString = ((BigInteger)Math.Pow(2, 1000)).ToString();

            Assert.Equal(1366, EulerHelperFunctions.SumIndividualDigitsInString(powerAsString));
        }