Jump to content

Prime numbers whose neighboring pairs are tetraprimes: Difference between revisions

m
Minor improvement to code.
m (Added language identifier.)
m (Minor improvement to code.)
Line 343:
std::vector<bool> marked_prime(limit + 1, true);
 
for ( uint32_t pi = 2; pi * pi <= limit; ++pi ) {
if ( marked_prime[pi] ) {
for ( uint32_t ij = pi * pi; ij <= limit; ij += pi ) {
marked_prime[ij] = false;
}
}
}
 
for ( uint32_t pi = 2; pi <= limit; ++pi ) {
if ( marked_prime[pi] ) {
primes.emplace_back(pi);
}
}
Line 373:
uint32_t count = 0;
uint32_t previous_factor = 1;
for ( uint32_t pprime : primes ) {
uint32_tuint64_t limit = pprime * pprime;
if ( count == 0 ) {
limit *= limit;
} else if ( count == 1 ) {
limit *= pprime;
}
if ( limit <= n ) {
while ( n % pprime == 0 ) {
if ( count == 4 || pprime == previous_factor ) {
return false;
}
count++;
n /= pprime;
previous_factor = pprime;
}
} else {
Line 410:
const uint32_t largest_prime_7 = primes.back();
std::vector<uint32_t> tetras_preceeding;
std::vector<uint32_t> tetras_following ;
uint32_t sevens_preceeding = 0;
uint32_t sevens_following = 0;
uint32_t limit = 100'000;
 
for ( const uint32_t& pprime : primes ) {
if ( is_tetraPrime(pprime - 1) && is_tetraPrime(pprime - 2) ) {
tetras_preceeding.emplace_back(pprime);
if ( ( pprime - 1 ) % 7 == 0 || ( pprime - 2 ) % 7 == 0 ) {
sevens_preceeding++;
}
}
 
if ( is_tetraPrime(pprime + 1) && is_tetraPrime(pprime + 2) ) {
tetras_following.emplace_back(pprime);
if ( ( pprime + 1 ) % 7 == 0 || ( pprime + 2 ) % 7 == 0 ) {
sevens_following++;
}
}
 
if ( pprime == largest_prime_5 || pprime == largest_prime_6 || pprime == largest_prime_7 ) {
for ( uint32_t i = 0; i <= 1; ++i ) {
std::vector<uint32_t> tetras = ( i == 0 ) ? tetras_preceeding : tetras_following;
Line 439:
std::cout << "Found " << size << " primes under " << limit << " whose "
<< text << " neighboring pair are tetraprimes";
if ( pprime == largest_prime_5 ) {
std::cout << ":" << std::endl;
for ( uint64_t ij = 0; ij < size; ++ij ) {
std::cout << std::setw(7) << tetras[ij] << ( ( ij % 10 == 9 ) ? "\n" : "" );
}
std::cout << std::endl;
908

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.