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.

A262038 Least palindrome >= n.

Original entry on oeis.org

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 11, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77
Offset: 0

Views

Author

M. F. Hasler, Sep 08 2015

Keywords

Comments

Could be called nextpalindrome() in analogy to the nextprime() function A007918. As for the latter (A151800), there is the variant "next strictly larger palindrome" which equals a(n+1), and thus differs from a(n) iff n is a palindrome; see PARI code.
Might also be called palindromic ceiling function in analogy to the name "palindromic floor" proposed for A261423.

Crossrefs

Sequences related to palindromic floor and ceiling: A175298, A206913, A206914, A261423, A262038, and the large block of consecutive sequences beginning at A265509.

Programs

  • Haskell
    a262038 n = a262038_list !! n
    a262038_list = f 0 a002113_list where
       f n ps'@(p:ps) = p : f (n + 1) (if p > n then ps' else ps)
    -- Reinhard Zumkeller, Sep 16 2015
    
  • Mathematica
    palQ[n_] := Block[{d = IntegerDigits@ n}, d == Reverse@ d]; Table[k = n; While[! palQ@ k, k++]; k, {n, 0, 80}] (* Michael De Vlieger, Sep 09 2015 *)
  • PARI
    {A262038(n, d=digits(n), p(d)=sum(i=1, #d\2, (10^(i-1)+10^(#d-i))*d[i],if(bittest(#d,0),10^(#d\2)*d[#d\2+1])))= for(i=(#d+3)\2,#d,d[i]>d[#d+1-i]&&break;(d[i]9||return(p(d));d[i]=0);10^#d+1} \\ For a function "next strictly larger palindrome", delete the i==#d and n<10... part. - M. F. Hasler, Sep 09 2015
    
  • Python
    def A262038(n):
        sl = len(str(n))
        l = sl>>1
        if sl&1:
            w = 10**l
            n2 = w*10
            for y in range(n//(10**l),n2):
                k, m = y//10, 0
                while k >= 10:
                    k, r = divmod(k,10)
                    m = 10*m + r
                z = y*w + 10*m + k
                if z >= n:
                    return z
        else:
            w = 10**(l-1)
            n2 = w*10
            for y in range(n//(10**l),n2):
                k, m = y, 0
                while k >= 10:
                    k, r = divmod(k,10)
                    m = 10*m + r
                z = y*n2 + 10*m + k
                if z >= n:
                    return z # Chai Wah Wu, Sep 14 2022