Esempio n. 1
0
        public override long Solve()
        {
            var bRange = Primes.CalculatePrimesBelow(MAX_COEFF);
            var aRange = Enumerable.Range(-999, 1999);

            long maxPrimesCount = 0;
            long maxACoeff      = 0;
            long maxBCoeff      = 0;

            foreach (var b in bRange)
            {
                foreach (var a in aRange)
                {
                    long n = 0;
                    while (Primes.IsPrime((n * n) + (a * n) + b))
                    {
                        n++;
                    }
                    if (n > maxPrimesCount)
                    {
                        maxPrimesCount = n;
                        maxACoeff      = a;
                        maxBCoeff      = b;
                    }
                }
            }
            return(maxACoeff * maxBCoeff);
        }
Esempio n. 2
0
 public override long Solve()
 {
     for (int i = 9; i > 0; i--)
     {
         var pandigitals = Pandigitals.Generate(i).OrderByDescending(p => p);
         foreach (var pandigital in pandigitals)
         {
             if (Primes.IsPrime(pandigital))
             {
                 return(pandigital);
             }
         }
     }
     return(0);
 }
Esempio n. 3
0
        public static long LargestPrimeFactor(long number)
        {
            //start at sqrt of number.
            var  limit = (long)Math.Sqrt(number);
            long largestPrimeFactor = 0;

            for (long i = limit; i > 0; i--)
            {
                if (number % i == 0 && Primes.IsPrime(i))
                {
                    largestPrimeFactor = i;
                    break;
                }
            }
            return(largestPrimeFactor);
        }
Esempio n. 4
0
        public override long Solve()
        {
            int currentCornerNumber = 1;
            int sideLength          = 1;
            int spiral = 1;

            while (RatioOfPrimes >= 0.1M || numberOfPrimes == 0)
            {
                for (int i = 1; i <= 4; i++)
                {
                    var primetoCheck = currentCornerNumber += 2 * spiral;
                    if (Primes.IsPrime(primetoCheck))
                    {
                        numberOfPrimes++;
                    }
                    numberOfCornerNumbers++;
                }
                sideLength += 2;
                spiral++;
            }
            return(sideLength);
        }
Esempio n. 5
0
        public override long Solve()
        {
            for (int number = 1490; number < 9999; number++)
            {
                var perms     = Permutations.Generate(number).Where(p => p.ToString().Length == 4);
                var permsList = new List <long>();

                perms.ToList().ForEach(p => { if (Primes.IsPrime(p))
                                              {
                                                  permsList.Add(p);
                                              }
                                       });
                if (permsList.Count >= 4)
                {
                    var sequence = FindSequence(permsList);
                    if (sequence.Count > 0 && !sequence.Contains(1487))
                    {
                        return(long.Parse(sequence[0].ToString() + sequence[1].ToString() + sequence[2].ToString()));
                    }
                }
            }
            throw new Exception("Cannot find sequence....you messed it up");
        }
Esempio n. 6
0
        public override long Solve()
        {
            long smallestSum = 0;
            var  primes      = Primes.CalculatePrimesBelow(10000);

            foreach (var first in primes)
            {
                foreach (var second in primes)
                {
                    if (second <= first)
                    {
                        continue;
                    }
                    if (Primes.IsPrime(Concat(first, second)) && Primes.IsPrime(Concat(second, first)))
                    {
                        foreach (var third in primes)
                        {
                            if (third <= second)
                            {
                                continue;
                            }

                            if (Primes.IsPrime(Concat(first, third)) && Primes.IsPrime(Concat(third, first)) &&
                                Primes.IsPrime(Concat(second, third)) && Primes.IsPrime(Concat(third, second)))
                            {
                                foreach (var fourth in primes)
                                {
                                    if (fourth <= third)
                                    {
                                        continue;
                                    }
                                    if (Primes.IsPrime(Concat(first, fourth)) && Primes.IsPrime(Concat(fourth, first)) &&
                                        Primes.IsPrime(Concat(second, fourth)) && Primes.IsPrime(Concat(fourth, second)) &&
                                        Primes.IsPrime(Concat(third, fourth)) && Primes.IsPrime(Concat(fourth, third)))
                                    {
                                        foreach (var fifth in primes)
                                        {
                                            if (fifth <= fourth)
                                            {
                                                continue;
                                            }
                                            if (Primes.IsPrime(Concat(first, fifth)) && Primes.IsPrime(Concat(fifth, first)) &&
                                                Primes.IsPrime(Concat(second, fifth)) && Primes.IsPrime(Concat(fifth, second)) &&
                                                Primes.IsPrime(Concat(third, fifth)) && Primes.IsPrime(Concat(fifth, third)) &&
                                                Primes.IsPrime(Concat(fourth, fifth)) && Primes.IsPrime(Concat(fifth, fourth)))
                                            {
                                                Console.WriteLine("1: {0} 2: {1} 3: {2} 4: {3} 5: {4}", first, second, third, fourth, fifth);
                                                var sum = new List <long> {
                                                    first, second, third, fourth, fifth
                                                }.Sum();
                                                if (sum < smallestSum || smallestSum == 0)
                                                {
                                                    smallestSum = sum;
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }

            return(smallestSum);
        }