Let $g_n^k=p_{n+k}-p_n$, where $p_n$ is the $n$th prime. Does there exist $g_{k+1}^1=2$ such that $g_1^k,g_2^k,\ldots$ is a "Gilbreath sequence?"

168 Views Asked by At

Call $(S_i)_{i=1}^{\infty}$ a Gilbreath sequence if $1=\lvert S_2-S_1\rvert=\lvert \lvert S_3-S_2\rvert-\lvert S_2-S_1\rvert\rvert=\cdots$, i.e., if the sequence can be substituted for the primes in Gilbreath's conjecture.

Let $g_n^k=p_{n+k}-p_n$, where $p_n$ is the $n$th prime. Do there exist twin primes $p_{k+1},\ p_{k+2}$ such that $g_1^k,g_2^k,\ldots$ is a Gilbreath sequence? That there exists some such $k$ is a generalization of Gilbreath's conjecture, since it is the case $k=1$.

To give a simple example, it appears that we can take $k=2$, which has the sequence of gaps $5-2=3,\ 7-3=4,\ 11-5=6,\ 13-7=6,17-11=6,\ 19-13=6,\ldots,$ which have absolute differences $1,2,0,0,0,\ldots$

1

There are 1 best solutions below

0
On

Till now, I cannot tell you for which $k$ the sequence is Gilbreath. But at least I can tell you for which $k$ it is not Gilbreath.

It was a hard attempt for my laptop CPU to test 50000 sequences for k from 1 to 100 which took 231.3s time.

I obtained the following results:

k=1
Gilbreath passed 49999 tests successfully
k=2
Gilbreath passed 49998 tests successfully
k=3
Gilbreath rejected at n=1
k=4
Gilbreath passed 49996 tests successfully
k=5
Gilbreath rejected at n=1
k=6
Gilbreath passed 49994 tests successfully
k=7
Gilbreath rejected at n=1
k=8
Gilbreath rejected at n=1
k=9
Gilbreath rejected at n=2
k=10
Gilbreath rejected at n=1
k=11
Gilbreath rejected at n=1
k=12
Gilbreath passed 49988 tests successfully
k=13
Gilbreath rejected at n=1
k=14
Gilbreath rejected at n=1
k=15
Gilbreath rejected at n=1
k=16
Gilbreath rejected at n=2
k=17
Gilbreath rejected at n=1
k=18
Gilbreath rejected at n=1
k=19
Gilbreath rejected at n=2
k=20
Gilbreath rejected at n=1
k=21
Gilbreath rejected at n=1
k=22
Gilbreath rejected at n=1
k=23
Gilbreath rejected at n=1
k=24
Gilbreath rejected at n=1
k=25
Gilbreath rejected at n=5
k=26
Gilbreath rejected at n=1
k=27
Gilbreath rejected at n=3
k=28
Gilbreath rejected at n=1
k=29
Gilbreath rejected at n=1
k=30
Gilbreath rejected at n=1
k=31
Gilbreath rejected at n=1
k=32
Gilbreath rejected at n=2
k=33
Gilbreath rejected at n=1
k=34
Gilbreath rejected at n=2
k=35
Gilbreath rejected at n=1
k=36
Gilbreath rejected at n=1
k=37
Gilbreath rejected at n=1
k=38
Gilbreath rejected at n=1
k=39
Gilbreath rejected at n=1
k=40
Gilbreath rejected at n=2
k=41
Gilbreath rejected at n=1
k=42
Gilbreath rejected at n=4
k=43
Gilbreath rejected at n=1
k=44
Gilbreath rejected at n=2
k=45
Gilbreath rejected at n=1
k=46
Gilbreath rejected at n=1
k=47
Gilbreath rejected at n=1
k=48
Gilbreath rejected at n=5
k=49
Gilbreath rejected at n=1
k=50
Gilbreath rejected at n=1
k=51
Gilbreath rejected at n=2
k=52
Gilbreath rejected at n=1
k=53
Gilbreath rejected at n=1
k=54
Gilbreath rejected at n=1
k=55
Gilbreath rejected at n=1
k=56
Gilbreath rejected at n=2
k=57
Gilbreath rejected at n=1
k=58
Gilbreath rejected at n=1
k=59
Gilbreath rejected at n=2
k=60
Gilbreath rejected at n=1
k=61
Gilbreath rejected at n=1
k=62
Gilbreath rejected at n=1
k=63
Gilbreath rejected at n=3
k=64
Gilbreath rejected at n=1
k=65
Gilbreath rejected at n=1
k=66
Gilbreath rejected at n=1
k=67
Gilbreath rejected at n=1
k=68
Gilbreath passed 49932 tests successfully
k=69
Gilbreath rejected at n=1
k=70
Gilbreath rejected at n=1
k=71
Gilbreath rejected at n=1
k=72
Gilbreath rejected at n=1
k=73
Gilbreath rejected at n=1
k=74
Gilbreath rejected at n=1
k=75
Gilbreath rejected at n=1
k=76
Gilbreath rejected at n=1
k=77
Gilbreath rejected at n=1
k=78
Gilbreath rejected at n=1
k=79
Gilbreath rejected at n=1
k=80
Gilbreath rejected at n=2
k=81
Gilbreath rejected at n=1
k=82
Gilbreath rejected at n=2
k=83
Gilbreath rejected at n=1
k=84
Gilbreath rejected at n=1
k=85
Gilbreath rejected at n=1
k=86
Gilbreath rejected at n=1
k=87
Gilbreath rejected at n=1
k=88
Gilbreath rejected at n=3
k=89
Gilbreath rejected at n=1
k=90
Gilbreath rejected at n=1
k=91
Gilbreath rejected at n=1
k=92
Gilbreath rejected at n=1
k=93
Gilbreath rejected at n=1
k=94
Gilbreath rejected at n=1
k=95
Gilbreath rejected at n=1
k=96
Gilbreath rejected at n=1
k=97
Gilbreath rejected at n=2
k=98
Gilbreath rejected at n=1
k=99
Gilbreath rejected at n=1

Running the following C++ code:

#include <iostream>
#include <vector>

typedef std::vector<int> num_vec;

// Generating a huge list of prime numbers 
void fill_prime(num_vec &primes, int N)
{   // N is to be a huge number
    primes.reserve(N);
    primes.push_back(2); // the only even number
    int found_counter=1;
    int prime_target=3;

    while(found_counter<N)
    {   // find more primes
        bool rejected=false;
        for(int k=0;k<found_counter && primes[k]*primes[k]<=prime_target && !rejected;k++)
        {
            if(prime_target%primes[k]==0) // dividable by previous prime numbers
                rejected=true;
        }
        if(!rejected) // is prime
        {
            primes.push_back(prime_target);  // add to the list of primes
            found_counter++;
        }
        prime_target+=2; // next odd number
    }
}

num_vec Gilbreath(const num_vec &numbers,const int k)
{
    num_vec results;
    const int gilbsize=numbers.size()-k;
    if(gilbsize<=0)
        return results;
    results.reserve(gilbsize);
    for(int n=0;n<gilbsize;n++)
        results.push_back(abs(numbers[n]-numbers[n+k]));
    return results;
}

void check_Gilbreath(const num_vec &numbers)
{
    num_vec g(numbers);
    int n=0;
    while(g.size()>1)
    {
        g=Gilbreath(g,1);
        n++;
        if(g[0]!=1)
        {
            std::cout<<"Gilbreath rejected at n="<<n<<std::endl;
            return ;
        }
    }
    std::cout<<"Gilbreath passed "<<numbers.size()<<" tests successfully"<<std::endl;
}

int main()
{
    const int N_prime=50000;
    const int k=2;
    num_vec primes;
    fill_prime(primes,N_prime);
    for(int k=1;k<100;k++)
    {
        std::cout<<"k="<<k<<std::endl;
        num_vec gilbk=Gilbreath(primes,k);
        check_Gilbreath(gilbk); 
    }
    return 0;
}

If you believe this code needs an improvement, you may alter it on github.

I hope some one can give you a better idea.