Exemple #1
0
        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();
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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;
            }
        }