login
Numbers whose mixed binary-ternary representation is not a binary or ternary representation. See Comments.
3

%I #31 Feb 18 2022 21:06:00

%S 13,14,22,23,26,31,35,38,39,41,42,43,44,45,46,47,50,51,52,53,58,59,62,

%T 67,70,71,73,74,75,76,77,78,79,85,86,89,94,95,97,98,103,104,107,112,

%U 113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,131

%N Numbers whose mixed binary-ternary representation is not a binary or ternary representation. See Comments.

%C Suppose that B1 and B2 are increasing sequences of positive integers, and let B be the increasing sequence of numbers in the union of B1 and B2. Every positive integer n has a unique representation given by the greedy algorithm with B1 as base, and likewise for B2 and B. For many n, the number of terms in the B-representation of n is less than the number of terms in the B1-representation, as well as the B2-representation, but not for all n, as in the example 45 = 27 + 18 (ternary) and 45 = 32 + 9 + 4 (mixed).

%C Note that 1 and 2 = 10_2 = 2_3 are each representable as terms in both binary and ternary. - _Michael S. Branicky_, Jan 06 2022

%e 7 = 6 + 1 = 21_3 is not a term;

%e 11 = 9 + 2 = 102_3 is not a term;

%e 13 = 9 + 4 = 3^2 + 2^2 is a term;

%e 22 = 18 + 4 = 2*3^2 + 2^2 is a term.

%t u = Table[2^n, {n, 0, 50}]; v = Table[3^n, {n, 0, 40}];

%t uQ[n_] := MemberQ[u, n]; vQ[n_] := MemberQ[v, n];

%t Attributes[uQ] = {Listable}; Attributes[vQ] = {Listable};

%t s = Reverse[Union[Flatten[Table[{2^(n - 1), 3^n}, {n, 1, 30}]]]];

%t w = Map[#[[1]] &,Select[Map[{#[[1]], {Apply[And, uQ[#[[2]]]],

%t Apply[And, vQ[#[[2]]]]}} &, Map[{#, DeleteCases[

%t s Reap[FoldList[(Sow[Quotient[#1, #2]]; Mod[#1, #2]) &, #,

%t s]][[2, 1]], 0]} &,

%t Range[700]]], #[[2]] == {False, False} &]]

%t (* _Peter J. C. Moses_, Jun 14 2020 *)

%o (Python)

%o from itertools import count, takewhile

%o N = 10**6

%o B1 = list(takewhile(lambda x: x[0] <= N, ((2**i, 2) for i in count(0))))

%o B21 = list(takewhile(lambda x: x[0] <= N, ((3**i, 3) for i in count(0))))

%o B22 = list(takewhile(lambda x: x[0] <= N, ((2*3**i, 3) for i in count(0))))

%o B = sorted(set(B1 + B21 + B22), reverse=True)

%o def ok(n):

%o r, bases = [], set()

%o for t, b in B:

%o if t <= n:

%o r.append(t)

%o if t != 1 and t != 2:

%o bases.add(b)

%o n -= t

%o if n == 0:

%o return len(bases) == 2

%o print([k for k in range(1, 132) if ok(k)]) # _Michael S. Branicky_, Jan 06 2022

%Y Cf. A000079, A000244, A336005, A336006, A336007.

%K nonn,base

%O 1,1

%A _Clark Kimberling_, Jul 06 2020

%E Terms and examples corrected by _Michael S. Branicky_, Jan 06 2022