OFFSET
1,1
COMMENTS
We start from two lists of primes according to whether their indices are prime or nonprime, the first list being A007821, the second A006450:
2,7,13,19,23,29,37,43,47,53,61,71,73,79,89,..
3,5,11,17,31,41,59,67,83,109,127,157,179,191,..
We construct rows of an intermediate table by transversing this double list, basically reading a number, then using this number as an index into the other list, reading the prime there, using it again as an index into the original list etc, alternating between the two lists.
A new row is started from the smallest prime not contained in any earlier row (the "generator" of this row). The first row starts with 2, takes the 2nd entry of the other list (which is 5), takes the 5th entry from the original list (which is 23), then the 23rd entry of the other list etc. The 2nd row starts with 3 (the smallest prime not in the first row, takes the 3rd entry from the first list (which is 13), the 13th entry from the 2nd list, which is 179 etc.
By construction, the table contains each prime exactly once. The first column with the generators defines the sequence.
EXAMPLE
The table with the generator in the first column and followup primes in the same row starts
2,5,23,431,3821,...
3,13,179,1439,...
7,59,419,...
11,61,1847,...
17,101,3943,...
19,331,2833,...
29,599,5507,...
31,197,9739,...
37,919,8861,...
41,269,...
43,1153,...
47,1297,...
PROG
(PARI) lista(nn) = my(v = primes(nn), vp = select(x->isprime(primepi(x)), v), vc = setminus(v, vp), list = List()); while (#v, my(p=v[1], q); listput(list, p); v = setminus(v, [p]); my(ok = 1); while(ok, if (vecsearch(vp, p), vx=vc; vy=vp, vx=vp; vy=vc); if (p > #vx, ok = 0, q = vx[p]; v = setminus(v, [q]); if (q > #vy, ok = 0, q = vy[q]; v = setminus(v, [q]); p = q; ); ); ); ); Vec(list); \\ Michel Marcus, Oct 31 2022
CROSSREFS
KEYWORD
easy,nonn
AUTHOR
Daniel Tisdale, Jun 05 2009
EXTENSIONS
Edited and extended by R. J. Mathar, Jun 23 2009
More terms from Michel Marcus, Oct 31 2022
STATUS
approved