Exemplo n.º 1
0
        public BigInteger Solve(BigInteger?input = null)
        {
            int numberOfDivisors = 0;
            int i = 2, triangleNumber = 1;

            while (numberOfDivisors < 500)
            {
                numberOfDivisors = 0;
                triangleNumber  += i;

                int testNumber = triangleNumber;
                Dictionary <int, int> divisors = DivisorsHelper.CalculatePrimeDivisors(testNumber, PrimeHelper.FindPrimesUnderLimit(200000000));

                numberOfDivisors = divisors.Values.ElementAt(0) + 1;
                for (int l = 1; l < divisors.Count; l++)
                {
                    numberOfDivisors *= divisors.Values.ElementAt(l) + 1;
                }

                i++;
            }


            return(triangleNumber);
        }
 public async Task <Response> CalcDivisors(int Number)
 {
     return(await Task.FromResult(new Response(new
     {
         Divisors = string.Join(", ", DivisorsHelper.GetDivisors(Number)),
         Primes = string.Join(", ", DivisorsHelper.GetPrimeNumers(DivisorsHelper.GetDivisors(Number)))
     })));
 }
Exemplo n.º 3
0
        public BigInteger Solve(BigInteger?input = null)
        {
            var        primes          = PrimeHelper.FindPrimesUnderLimit(28124);
            List <int> abundantNumbers = new List <int>();

            for (int i = 2; i < 28124; i++)
            {
                if (DivisorsHelper.SumOfProperDivisors(i, primes) > i)
                {
                    abundantNumbers.Add(i);
                }
            }

            BigInteger result = 0;

            bool[] canBeSummed = new bool[28124];
            for (int i = 0; i < abundantNumbers.Count; i++)
            {
                for (int j = 0; j < abundantNumbers.Count; j++)
                {
                    if (abundantNumbers[i] + abundantNumbers[j] >= 28124)
                    {
                        break;
                    }

                    canBeSummed[abundantNumbers[i] + abundantNumbers[j]] = true;
                }
            }

            for (int i = 1; i < 28124; i++)
            {
                if (!canBeSummed[i])
                {
                    result += i;
                }
            }

            return(result);
        }
Exemplo n.º 4
0
        public BigInteger Solve(BigInteger?input = null)
        {
            BigInteger result = 0;

            bool[] primesUnderLimit = PrimeHelper.FindPrimesUnderLimit(10001);
            for (int i = 2; i < 10000; i++)
            {
                if (primesUnderLimit[i])
                {
                    continue;
                }

                BigInteger sumOfDivisors = DivisorsHelper.SumOfDivisors(i, primesUnderLimit) - i;
                if (sumOfDivisors < 10000 &&
                    sumOfDivisors != i &&
                    DivisorsHelper.SumOfDivisors((int)sumOfDivisors, primesUnderLimit) - sumOfDivisors == i)
                {
                    result += i;
                }
            }

            return(result);
        }
Exemplo n.º 5
0
 public void CalcPrimeTestExpected()
 {
     CollectionAssert.AreEqual(ExpectedPrime, DivisorsHelper.GetPrimeNumers(DivisorsHelper.GetDivisors(45)));
 }
Exemplo n.º 6
0
 public void CalcPrimeTestIsNotNull()
 {
     Assert.IsNotNull(DivisorsHelper.GetPrimeNumers(DivisorsHelper.GetDivisors(45)));
 }
Exemplo n.º 7
0
 public void CalcDivisorsTestIsNotNull()
 {
     Assert.IsNotNull(DivisorsHelper.GetDivisors(45));
 }
Exemplo n.º 8
0
 public void CalcDivisorsTestExpected()
 {
     CollectionAssert.AreEqual(Expected, DivisorsHelper.GetDivisors(45));
 }