Sum-product number

From HandWiki

A sum-product number in a given number base [math]\displaystyle{ b }[/math] is a natural number that is equal to the product of the sum of its digits and the product of its digits.

There are a finite number of sum-product numbers in any given base [math]\displaystyle{ b }[/math].[1] In base 10, there are exactly four sum-product numbers (sequence A038369 in the OEIS): 0, 1, 135, and 144.[2]


Let [math]\displaystyle{ n }[/math] be a natural number. We define the sum-product function for base [math]\displaystyle{ b \gt 1 }[/math], [math]\displaystyle{ F_b : \mathbb{N} \rightarrow \mathbb{N} }[/math], to be the following:

[math]\displaystyle{ F_b(n) = \left(\sum_{i = 1}^k d_i\right)\!\!\left(\prod_{j = 1}^k d_j\right) }[/math]

where [math]\displaystyle{ k = \lfloor \log_b{n} \rfloor + 1 }[/math] is the number of digits in the number in base [math]\displaystyle{ b }[/math], and

[math]\displaystyle{ d_i = \frac{n \bmod{b^{i+1}} - n \bmod b^i}{b^i} }[/math]

is the value of each digit of the number. A natural number [math]\displaystyle{ n }[/math] is a sum-product number if it is a fixed point for [math]\displaystyle{ F_b }[/math], which occurs if [math]\displaystyle{ F_b(n) = n }[/math]. The natural numbers 0 and 1 are trivial sum-product numbers for all [math]\displaystyle{ b }[/math], and all other sum-product numbers are nontrivial sum-product numbers.

For example, the number 144 in base 10 is a sum-product number, because [math]\displaystyle{ 1 + 4 + 4 = 9 }[/math], [math]\displaystyle{ 1 \times 4 \times 4 = 16 }[/math], and [math]\displaystyle{ 9 \times 16 = 144 }[/math].

A natural number [math]\displaystyle{ n }[/math] is a sociable sum-product number if it is a periodic point for [math]\displaystyle{ F_b }[/math], where [math]\displaystyle{ F_b^p(n) = n }[/math] for a positive integer [math]\displaystyle{ p }[/math], and forms a cycle of period [math]\displaystyle{ p }[/math]. A sum-product number is a sociable sum-product number with [math]\displaystyle{ p = 1 }[/math], and an amicable sum-product number is a sociable sum-product number with [math]\displaystyle{ p = 2. }[/math]

All natural numbers [math]\displaystyle{ n }[/math] are preperiodic points for [math]\displaystyle{ F_b }[/math], regardless of the base. This is because for any given digit count [math]\displaystyle{ k }[/math], the minimum possible value of [math]\displaystyle{ n }[/math] is [math]\displaystyle{ b^{k-1} }[/math] and the maximum possible value of [math]\displaystyle{ n }[/math] is [math]\displaystyle{ b^k - 1 = \sum_{i=0}^{k-1} (b-1)^k. }[/math] The maximum possible digit sum is therefore [math]\displaystyle{ k(b-1) }[/math] and the maximum possible digit product is [math]\displaystyle{ (b-1)^k. }[/math] Thus, the sum-product function value is [math]\displaystyle{ F_b(n) = k(b-1)^{k+1}. }[/math] This suggests that [math]\displaystyle{ k(b-1)^{k+1} \geq n \geq b^{k-1}, }[/math] or dividing both sides by [math]\displaystyle{ (b-1)^{k-1} }[/math], [math]\displaystyle{ k(b-1)^2 \geq {\left(\frac{b}{b-1}\right)}^{k-1}. }[/math] Since [math]\displaystyle{ \frac{b}{b-1} \geq 1, }[/math] this means that there will be a maximum value [math]\displaystyle{ k }[/math] where [math]\displaystyle{ {\left(\frac{b}{b-1}\right)}^k \leq k(b-1)^2, }[/math] because of the exponential nature of [math]\displaystyle{ {\left(\frac{b}{b-1}\right)}^k }[/math] and the linearity of [math]\displaystyle{ k(b-1)^2. }[/math] Beyond this value [math]\displaystyle{ k }[/math], [math]\displaystyle{ F_b(n) \leq n }[/math] always. Thus, there are a finite number of sum-product numbers,[1] and any natural number is guaranteed to reach a periodic point or a fixed point less than [math]\displaystyle{ b^k - 1, }[/math] making it a preperiodic point.

The number of iterations [math]\displaystyle{ i }[/math] needed for [math]\displaystyle{ F_b^i(n) }[/math] to reach a fixed point is the sum-product function's persistence of [math]\displaystyle{ n }[/math], and undefined if it never reaches a fixed point.

Any integer shown to be a sum-product number in a given base must, by definition, also be a Harshad number in that base.

Sum-product numbers and cycles of Fb for specific b

All numbers are represented in base [math]\displaystyle{ b }[/math].

Base Nontrivial sum-product numbers Cycles
2 (none) (none)
3 (none) 2 → 11 → 2, 22 → 121 → 22
4 12 (none)
5 341 22 → 31 → 22
6 (none) (none)
7 22, 242, 1254, 2343, 116655, 346236, 424644
8 (none)
9 13, 281876, 724856, 7487248 53 → 143 → 116 → 53
10 135, 144
11 253, 419, 2189, 7634, 82974
12 128, 173, 353
13 435, A644, 268956
14 328, 544, 818C
15 2585
16 14
17 33, 3B2, 3993, 3E1E, C34D, C8A2
18 175, 2D2, 4B2
19 873, B1E, 24A8, EAH1, 1A78A, 6EC4B7
20 1D3, 14C9C, 22DCCG
21 1CC69
22 24, 366C, 6L1E, 4796G
23 7D2, J92, 25EH6
24 33DC
25 15, BD75, 1BBN8A
26 81M, JN44, 2C88G, EH888
27 [math]\displaystyle{ \varnothing }[/math]
28 15B
29 [math]\displaystyle{ \varnothing }[/math]
30 976, 85MDA
31 44, 13H, 1E5
32 [math]\displaystyle{ \varnothing }[/math]
33 1KS69, 54HSA
34 25Q8, 16L6W, B6CBQ
35 4U5W5
36 16, 22O

Extension to negative integers

Sum-product numbers can be extended to the negative integers by use of a signed-digit representation to represent each integer.

Programming example

The example below implements the sum-product function described in the definition above to search for sum-product numbers and cycles in Python.

def sum_product(x: int, b: int) -> int:
    """Sum-product number."""
    sum_x = 0
    product = 1
    while x > 0:
        if x % b > 0:
            sum_x = sum_x + x % b
            product = product * (x % b)
        x = x // b
    return sum_x * product

def sum_product_cycle(x: int, b: int) -> list[int]:
    seen = []
    while x not in seen:
        x = sum_product(x, b)
    cycle = []
    while x not in cycle:
        x = sum_product(x, b)
    return cycle

See also