/// <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; }
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)); }