protected override void Generate() { Sequence primes = new SieveOfEratosthenes(Max * 10); //going order of magnitude higher than prime because rotating prime could end up with a higher number; ex: 17 => 71 foreach (int prime in primes.InRange(LastNumber, Max)) { if (IsCircularPrime(prime, primes)) { Numbers.Add(prime); } } }
protected override void Generate() { Sequence primes = new SieveOfEratosthenes(Max); foreach (int prime in primes.InRange(LastNumber, Max)) { int sumOfDigits = prime.SumOfDigits(); if (primes.Contains(sumOfDigits)) //sum of digits is guaranteed to be equal or lesser number, so its in the prime collection { Numbers.Add(prime); } } }
protected override void Generate() { Sequence primes = new SieveOfEratosthenes(Max + X); foreach (int prime in primes.InRange(LastNumber, Max)) { int p2 = prime + X; int p3 = prime - X; if (primes.Contains(p2) || primes.Contains(p3)) { Numbers.Add(prime); } } }
protected override void Generate() { Sequence primes = new SieveOfEratosthenes(Max); BigInteger productOfHiggsPrimes = ProductOfNumbers(); foreach (int prime in primes.InRange(LastNumber, Max)) { int totient = prime - 1; BigInteger squaredProduct = productOfHiggsPrimes * productOfHiggsPrimes; if (squaredProduct % totient == 0) { Numbers.Add(prime); productOfHiggsPrimes *= prime; } } }