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.

A117128 Recamán transform of primes (another version): a(0)=1; for n>0, a(n) = a(n-1) - prime(n) if that number is positive and not already in the sequence, otherwise a(n) = a(n-1) + prime(n).

Original entry on oeis.org

1, 3, 6, 11, 4, 15, 2, 19, 38, 61, 32, 63, 26, 67, 24, 71, 18, 77, 16, 83, 12, 85, 164, 81, 170, 73, 174, 277, 384, 275, 162, 35, 166, 29, 168, 317, 468, 311, 148, 315, 142, 321, 140, 331, 138, 335, 136, 347, 124, 351, 122, 355, 116, 357, 106, 363, 100, 369, 98, 375, 94, 377
Offset: 0

Views

Author

N. J. A. Sloane, Apr 20 2006

Keywords

Comments

Differs from Cald's sequence A006509 for first time at n=116 (or 117, depending on offset).

Crossrefs

Programs

  • Haskell
    import Data.Set (singleton, notMember, insert)
    a117128 n = a117128_list !! n
    a117128_list = 1 : f 1 a000040_list (singleton 1) where
       f x (p:ps) s | x' > 0 && x' `notMember` s = x' : f x' ps (insert x' s)
                    | otherwise                  = xp : f xp ps (insert xp s)
                    where x' = x - p; xp = x + p
    -- Reinhard Zumkeller, Apr 26 2012
    
  • Maple
    M1:=500000; a:=array(0..M1); have:=array(1..M1); a[0]:=1; for n from 1 to M1 do have[n]:=0; od: have[1]:=1;
    M2:=2000; nmax:=M2;
    for n from 1 to M2 do p:=ithprime(n); i:=a[n-1]-p; j:=a[n-1]+p;
    if i >= 1 and have[i]=0 then a[n]:=i; have[i]:=1;
    elif j <= M1 then a[n]:=j; have[j]:=1;
    else nmax:=n-1; break; fi; od: [seq(a[n],n=0..M2)];
  • Mathematica
    a = {1}; Do[If[And[#1 > 0, ! MemberQ[a, #1]], AppendTo[a, #1], AppendTo[a, #2]] & @@ {#1 - #2, #1 + #2} & @@ {a[[n - 1]], Prime[n - 1]}, {n, 2, 62}]; a (* Michael De Vlieger, Dec 05 2016 *)
  • Python
    from sympy import primerange, prime
    def aupton(terms):
      alst = [1]
      for n, pn in enumerate(primerange(1, prime(terms)+1), start=1):
        x = alst[-1] - pn
        alst += [x if x > 0 and x not in alst else alst[-1] + pn]
      return alst
    print(aupton(61)) # Michael S. Branicky, May 30 2021

Formula

a(n) = A064365(n) + 1. - Thomas Ordowski, Dec 05 2016