static void Main(string[] args) { var primeGenerator = new CachedPrimeNumberGenerator(new SievePrimeNumberGenerator()); var primes = primeGenerator.GetPrimesBelowLongMaxValue(); long[] results = new long[11]; int index = 0; foreach (var prime in primes.SkipWhile(p => p <= 7)) { if (IsTruncatableLeft(prime, primeGenerator) && IsTruncatableRight(prime, primeGenerator)) { results[index++] = prime; Console.WriteLine("Found {0} ({1}/11)", prime, index); if (index == 11) { break; } } } Console.WriteLine(results.Sum()); Console.ReadKey(); }
private static PrimesCount CountPrimes(int a, int b) { var retVal = new PrimesCount { NumPrimes = -1, A = a, B = b }; IEnumerable <long> primes; long result = 0; int n = 0; do { retVal.NumPrimes++; result = n * n + a * n + b; primes = generator.GetPrimesBelowLongMaxValue().TakeWhile(p => p <= result); n++; }while (primes.Contains(result)); return(retVal); }
static void Main(string[] args) { CachedPrimeNumberGenerator generator = new CachedPrimeNumberGenerator(new SievePrimeNumberGenerator()); int current = 9; while (true) { var primes = generator.GetPrimesBelowLongMaxValue().TakeWhile(p => p <= current).ToList(); if (!primes.Contains(current)) { if (!IsGoldbachComposit(primes, current)) { Console.WriteLine(current); Console.ReadKey(); break; } } current += 2; } }