%I #54 May 31 2021 03:26:44
%S 0,2,5,10,3,14,1,18,37,60,31,62,25,66,23,70,17,76,15,82,11,84,163,80,
%T 169,72,173,276,383,274,161,34,165,28,167,316,467,310,147,314,141,320,
%U 139,330,137,334,135,346,123,350,121,354,115,356,105,362,99,368,97,374,93
%N a(0) = 0; thereafter a(n) = a(n-1)-prime(n) if positive and new, otherwise a(n) = a(n-1)+prime(n), where prime(n) is the n-th prime.
%C 'Recamán transform' (see A005132) of the prime sequence. Note that the definition permits repeated terms [though only by addition] (and there are many repeated terms, just as there are in A005132).
%C Does every positive integer appear in the sequence? This seems unlikely, since 4 has not appeared in 70000 terms.
%C Note: this is similar to _Clark Kimberling_'s A022831, except in the latter sequence the words 'and new' have been omitted.
%C The smallest numbers not occurring in the first million terms: 4, 6, 7, 12, 13, 16, 19, 20, 21, 22, 24, 26, 27, 29, 30, 32, 36, 39, 41, 42. - _Reinhard Zumkeller_, Apr 26 2012
%H N. J. A. Sloane, <a href="/A064365/b064365.txt">First 70000 terms</a>
%H <a href="/index/Rea#Recaman">Index entries for sequences related to Recamán's sequence</a>
%F a(n) = A117128(n) - 1. - _Thomas Ordowski_, Dec 05 2016
%e To find a(9) we try subtracting the 9th prime, which is 23, from a(8), which is 37. 37 - 23 = 14, but 14 is already in the sequence (it is a(5)), so we must add. a(9) = 37 + 23 = 60.
%t a = {0}; Do[ If[ a[ [ -1 ] ] - Prime[ n ] > 0 && Position[ a, a[ [ -1 ] ] - Prime[ n ] ] == {}, a = Append[ a, a[ [ -1 ] ] - Prime[ n ] ], a = Append[ a, a[ [ -1 ] ] + Prime[ n ] ] ], {n, 1, 70} ]; a (* Modified by _Ivan N. Ianakiev_, Aug 05 2019, to accommodate the new initial term of a(0). *)
%o (PARI) A064365(N,s/*=1 to print all terms*/)={ my(a=0,u=0); N & forprime(p=1,prime(N), s & print1(a","); u=bitor(u,2^a+=if(a<=p || bittest(u,a-p),p,-p)));a} \\ _M. F. Hasler_, Mar 07 2012
%o (Haskell)
%o import Data.Set (singleton, notMember, insert)
%o a064365 n = a064365_list !! n
%o a064365_list = 0 : f 0 a000040_list (singleton 0) where
%o f x (p:ps) s | x' > 0 && x' `notMember` s = x' : f x' ps (insert x' s)
%o | otherwise = xp : f xp ps (insert xp s)
%o where x' = x - p; xp = x + p
%o -- _Reinhard Zumkeller_, Apr 26 2012
%o (Python)
%o from sympy import primerange, prime
%o def aupton(terms):
%o alst = [0]
%o for n, pn in enumerate(primerange(1, prime(terms)+1), start=1):
%o x = alst[-1] - pn
%o alst += [x if x > 0 and x not in alst else alst[-1] + pn]
%o return alst
%o print(aupton(60)) # _Michael S. Branicky_, May 30 2021
%Y Cf. A005132, A022831, A117128.
%K nonn,easy,nice,look,hear
%O 0,2
%A _Neil Fernandez_, Sep 25 2001
%E More terms from _Robert G. Wilson v_, Sep 26 2001
%E Further terms from _N. J. A. Sloane_, Feb 10 2002
%E Added initial term a(0)=0, in analogy with A128204, A005132, A053461, A117073/A078783. - _M. F. Hasler_, Mar 07 2012