login
a(1)=1. Then, if the first n terms contain all the numbers 1 to n, a(n+1)=2*a(n), otherwise a(n+1) is the smallest number not already in the sequence.
1

%I #9 Nov 13 2024 17:00:41

%S 1,2,4,3,6,5,10,7,8,9,18,11,12,13,14,15,16,17,34,19,20,21,22,23,24,25,

%T 26,27,28,29,30,31,32,33,66,35,36,37,38,39,40,41,42,43,44,45,46,47,48,

%U 49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,130

%N a(1)=1. Then, if the first n terms contain all the numbers 1 to n, a(n+1)=2*a(n), otherwise a(n+1) is the smallest number not already in the sequence.

%H Michael S. Branicky, <a href="/A191598/b191598.txt">Table of n, a(n) for n = 1..10000</a>

%e There are no gaps with just one term, so we double to get a(2)=2. Still no gaps, so we double again to get a(3)=4. Now 3 has not appeared yet, so a(4)=3. The sequence is compact again, so we double to get a(5)=6.

%o (Python)

%o from itertools import count, islice

%o def agen(): # generator of terms

%o an, aset, m = 1, {1}, 2

%o for n in count(1):

%o yield an

%o an = 2*an if m > n else m

%o aset.add(an)

%o while m in aset: m += 1

%o print(list(islice(agen(), 67))) # _Michael S. Branicky_, Nov 13 2024

%K nonn,easy,changed

%O 1,2

%A _Greg Knowles_, Jun 08 2011