A236175 Prime gap pattern of compacting Eratosthenes sieve for prime(4) = 7.
11, 6, 3, 6, 3, 6, 11, 2, 11, 6, 3, 6, 3, 6, 11, 2, 11, 6, 3, 6, 3, 6, 11, 2, 11, 6, 3, 6, 3, 6, 11, 2, 11, 6, 3, 6, 3, 6, 11, 2, 11, 6, 3, 6, 3, 6, 11, 2, 11, 6, 3, 6, 3, 6, 11, 2, 11, 6, 3, 6, 3, 6, 11, 2, 11, 6, 3, 6, 3, 6, 11, 2, 11, 6, 3, 6, 3, 6, 11, 2
Offset: 1
Links
- Michael Somos, Table of n, a(n) for n = 1..80
- Christopher J. Hanson, The structure of prime numbers and twin prime gaps
- Index entries for linear recurrences with constant coefficients, signature (0,0,0,0,0,0,0,1).
Crossrefs
Programs
-
Mathematica
PadRight[{}, 100, {11, 6, 3, 6, 3, 6, 11, 2}] (* Paolo Xausa, Jun 30 2024 *)
-
PARI
{a(n) = my(A); if( n<1, 0, A = vector( (n+1) * 1024 \ 37, k, k+1); for( i = 1, 3, A = select( k -> k%prime(i), A) ); polcoeff( (1 - x) * Ser( select( k -> (k%7) == 0, A, 1)), n) - 1) }; /* Michael Somos, Mar 09 2014 */ (C#) // p(4) = GeneratePrimePattern( 4 ); static void GeneratePrimePattern( int ordinal ) { // Contract if( ordinal < 1 ) throw new ArgumentOutOfRangeException( "ordinal" ); // Local data int size = 1 << 18; int[] numberLine = Enumerable.Range( 2, size ).ToArray(); int pointer = 0; // Apply sieve: for each integer greater than 1 while( pointer < numberLine.Length ) { // Locals int x = numberLine[pointer]; int index = pointer; List
pattern = new List (); int skips = 0; // Find all products for( int n = x + x; n < size; n += x ) { // Fast forward through number-line while( numberLine[++index] < n ) skips++; // If the number was not already removed if( numberLine[index] == n ) { // Mark as not prime numberLine[index] = 0; // Add skip count to pattern pattern.Add( skips ); // Reset skips skips = 0; } // Otherwise we've skipped again else skips++; } // Reduce number-line numberLine = numberLine.Where( n => n > 0 ).ToArray(); // If we have a pattern we want if( pattern.Any() && pointer == ordinal - 1 ) { // Report pattern int previousValue = 3; // > 2 System.Console.WriteLine( "Pattern P({0}) = {1} :: p({0}) = {2}", pointer + 1, numberLine[pointer], String.Join( ", ", pattern.TakeWhile( value => previousValue > 2 && ( previousValue = value ) > 0 ) ) ); return; } // Move number-line pointer forward pointer++; } }
Formula
a(n + 8) = a(n). - Michael Somos, Mar 09 2014
a(n) = A359632(n) - 1. - Peter Munn, Jan 21 2023
Extensions
Edited by Michael Somos, Mar 09 2014. Made sequence periodic.
Comments