cp's OEIS Frontend

This is a front-end for the Online Encyclopedia of Integer Sequences, made by Christian Perfect. The idea is to provide OEIS entries in non-ancient HTML, and then to think about how they're presented visually. The source code is on GitHub.

A361444 Lexicographically earliest sequence of distinct positive base-10 palindromes such that a(n) + a(n+1) is prime.

Original entry on oeis.org

1, 2, 3, 4, 7, 6, 5, 8, 9, 22, 141, 88, 111, 202, 55, 222, 11, 212, 99, 232, 121, 252, 101, 66, 131, 242, 191, 272, 77, 282, 151, 292, 171, 262, 181, 606, 313, 414, 343, 444, 353, 44, 303, 424, 33, 434, 323, 404, 383, 474, 535, 484, 373, 454, 333, 464, 363
Offset: 1

Views

Author

Jodi Spitz, Mar 12 2023

Keywords

Examples

			a(10) = 22, the smallest unused positive palindrome which can be added to a(9) = 9 to get a prime; 9 + 22 = 31.
		

Crossrefs

Programs

  • Mathematica
    nn = 60; kk = 5*10^4; c[_] = False; a[1] = j = 1; c[1] = True; u = 2;
    MapIndexed[Set[s[First[#2]], #1] &, Select[Range[kk], PalindromeQ]];
    Do[k = u; While[Or[c[k], CompositeQ[s[k] + j]], k++];
     Set[{a[n], c[k], j}, {k, True, s[k]}];
     If[k == u, While[c[u], u++]], {n, 2, nn}];
    Array[s @* a, nn] (* Michael De Vlieger, Mar 18 2023 *)
  • PARI
    nextpal(k) = my(d=digits(k)); while (d!=Vecrev(d), k++; d = digits(k)); k;
    lista(nn) = my(va = vector(nn)); va[1] = 1; for (n=2, nn, my(k=1); while(!isprime(va[n-1]+k) || #select(x->(x==k), va), k=nextpal(k+1)); va[n] = k;); va; \\ Michel Marcus, Mar 19 2023
  • Python
    from sympy import isprime
    from itertools import count, islice, product
    def pals(): # generator of palindromes
        digits = "0123456789"
        for d in count(1):
            for p in product(digits, repeat=d//2):
                if d > 1 and p[0] == "0": continue
                left = "".join(p); right = left[::-1]
                for mid in [[""], digits][d%2]:
                    yield int(left + mid + right)
    def agen(): # generator of terms of sequence
        pg, passed = pals(), []
        an = next(p for p in pg if p > 0) # start at 1
        while True:
            yield an
            for p in passed:
                if isprime(an+p):
                    passed.remove(p)
                    break
            else:
                 while not isprime(an + (p:=next(pg))):
                     passed.append(p)
            an = p
    print(list(islice(agen(), 57))) # Michael S. Branicky, Mar 12 2023
    

Extensions

a(25) and beyond from Michael S. Branicky, Mar 12 2023