Exemplo n.º 1
0
        /// <summary>
        /// Main Thread
        /// </summary>
        static void Main()
        {
            const int MAX_VALUE = 1000000;

            Dictionary <Int64, int> Solutions = new Dictionary <long, int>();

            PrimeNumber.CalculateTermsUntilValue(MAX_VALUE);


            int   i           = 1;
            Int64 primeNumber = PrimeNumber.GetPrimeTerm(i);

            while (primeNumber < MAX_VALUE)
            {
                int index = 1;

                while (PrimeNumber.GetPrimeTerm((int)index) < System.Math.Sqrt(primeNumber))
                {
                    Int64 sum   = 0;
                    int   count = 0;
                    int   j     = index;

                    while (sum < primeNumber)
                    {
                        sum += PrimeNumber.GetPrimeTerm((int)j);
                        count++;
                        j++;
                    }

                    if (sum == primeNumber)
                    {
                        if (Solutions.ContainsKey(primeNumber))
                        {
                            if (count > Solutions[primeNumber])
                            {
                                Solutions[primeNumber] = count;
                            }
                        }

                        else
                        {
                            Solutions.Add(primeNumber, count);
                        }
                    }

                    index++;
                }

                i++;
                primeNumber = PrimeNumber.GetPrimeTerm(i);
            }

            Console.WriteLine("Solution: {0}", Solutions.Aggregate((l, r) => l.Value > r.Value ? l : r).Key);
        }
Exemplo n.º 2
0
 /// <summary>
 /// Main Thread
 /// </summary>
 static void Main()
 {
     Console.WriteLine("Solution: {0}", PrimeNumber.GetPrimeTerm(MAX_ITEM));
 }