big = 1 000 000 s = 0 S = Set([]) unseen = 1 seen(v) = if (v < big, bit test(s, v), set search(S, v)) see(v) = if (v < big, s = bit or(s, 2^v), S = set union(S, Set([v]))); while (seen(unseen), unseen++) i=0 \\ running total = i-th prime number pr = [2] \\ first prime numbers (cache) other() = { my (u=i-1, v=i+1); my (pi=if (i, pr[i], 0)); while (u>0, while (v>#pr, pr = concat(pr, primes([pr[#pr]+1, 2*pr[#pr]]))); my (du=pi-pr[u], dv=pr[v]-pi, d=min(du,dv)); if (!seen(d), if (d==du, i=u; return (d); ); if (d==dv, i=v; return (d); ); ); if (d==du, u--); if (d==dv, v++); ); while (1, while (v>#pr, pr = concat(pr, primes([pr[#pr]+1, 2*pr[#pr]]))); my (d=pr[v]-pi); if (!seen(d), i=v; return (d); ); v++; ); } print ("0 0"); for (n=1, 10 000, see(a=other()); print (n " " pr[i])) quit