Esempio n. 1
0
        /// <summary>
        /// Calculates the prime Ratio
        /// </summary>
        public override void MatrixAction()
        {
            this.Ratio          = 0.1d;
            pReader             = new PrimeFileReader(new FileInfo(Path.Combine(PRIME_PATH, PRIME_FILE)), new long[] { 0, 50000000 });
            DiagonalMember      = new List <long>();
            PrimeDiagonalMember = new List <long>();
            long[] dCMembers = new long[4];
            long   current   = 1;

            do
            {
                this.Level++;
                for (int n = 1; n <= 4; n++)
                {
                    dCMembers[n - 1] = 2 * n * this.Level + current;
                    DiagonalMember.Add(dCMembers[n - 1]);
                }

                foreach (long prime in dCMembers.Where(x => IsPrime(x)))
                {
                    PrimeDiagonalMember.Add(prime);
                }
                current = dCMembers[dCMembers.Length - 1];
                //Console.Clear();
                //Console.WriteLine("Current Ratio: " + this.PrimeRatioPercent);
            } while (PrimeRatio > this.Ratio);
            this.Order = this.Level * 2 + 1;
        }
Esempio n. 2
0
 private bool IsPrime(long number)
 {
     if (number > CurrentPrimeDictionary)
     {
         String dName = (CurrentPrimeDictionary + SizePrimeDictionary) + ".txt";
         Console.WriteLine(String.Format("Cargando diccionario de primos, \"{0}\"...", dName));
         pReader = new PrimeFileReader(new FileInfo(Path.Combine(PRIME_PATH, dName)), new long[] { CurrentPrimeDictionary, (CurrentPrimeDictionary + SizePrimeDictionary) });
         CurrentPrimeDictionary = CurrentPrimeDictionary + SizePrimeDictionary;
     }
     return(pReader.IsPrime(number));
 }