Perfect digit-to-digit invariant

From HandWiki
Short description: Munchausen number

In number theory, a perfect digit-to-digit invariant (PDDI; also known as a Munchausen number[1]) is a natural number in a given number base [math]\displaystyle{ b }[/math] that is equal to the sum of its digits each raised to the power of itself. An example in base 10 is 3435, because [math]\displaystyle{ 3435 = 3^3 + 4^4 + 3^3 + 5^5 }[/math]. The term "Munchausen number" was coined by Dutch mathematician and software engineer Daan van Berkel in 2009,[2] as this evokes the story of Baron Munchausen raising himself up by his own ponytail because each digit is raised to the power of itself.[3][4]

Definition

Let [math]\displaystyle{ n }[/math] be a natural number which can be written in base [math]\displaystyle{ b }[/math] as the k-digit number [math]\displaystyle{ d_{k-1}d_{k-2}...d_{1}d_{0} }[/math] where each digit [math]\displaystyle{ d_i }[/math] is between [math]\displaystyle{ 0 }[/math] and [math]\displaystyle{ b-1 }[/math] inclusive, and [math]\displaystyle{ n = \sum_{i=0}^{k-1} d_{i}b^{i} }[/math]. We define the function [math]\displaystyle{ F_b : \mathbb{N} \rightarrow \mathbb{N} }[/math] as [math]\displaystyle{ F_b(n) = \sum_{i=0}^{k - 1} {d_i}^{d_i} }[/math]. (As 00 is usually undefined, there are typically two conventions used, one where it is taken to be equal to one, and another where it is taken to be equal to zero.[5][6]) A natural number [math]\displaystyle{ n }[/math] is defined to be a perfect digit-to-digit invariant in base b if [math]\displaystyle{ F_b(n) = n }[/math]. For example, the number 3435 is a perfect digit-to-digit invariant in base 10 because [math]\displaystyle{ 3^3 + 4^4 + 3^3 + 5^5 = 27 + 256 + 27 + 3125 = 3435 }[/math].

[math]\displaystyle{ F_b(1) = 1 }[/math] for all [math]\displaystyle{ b }[/math], and thus 1 is a trivial perfect digit-to-digit invariant in all bases, and all other perfect digit-to-digit invariants are nontrivial. For the second convention where [math]\displaystyle{ 0^0 = 0 }[/math], both [math]\displaystyle{ 0 }[/math] and [math]\displaystyle{ 1 }[/math] are trivial perfect digit-to-digit invariants.

A natural number [math]\displaystyle{ n }[/math] is a sociable digit-to-digit invariant if it is a periodic point for [math]\displaystyle{ F_{b} }[/math], where [math]\displaystyle{ F_{b}^k(n) = n }[/math] for a positive integer [math]\displaystyle{ k }[/math], and forms a cycle of period [math]\displaystyle{ k }[/math]. A perfect digit-to-digit invariant is a sociable digit-to-digit invariant with [math]\displaystyle{ k = 1 }[/math]. An amicable digit-to-digit invariant is a sociable digit-to-digit invariant with [math]\displaystyle{ k = 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 all natural numbers of base [math]\displaystyle{ b }[/math] with [math]\displaystyle{ k }[/math] digits satisfy [math]\displaystyle{ b^{k-1} \leq n \leq (k){(b - 1)}^{b-1} }[/math]. However, when [math]\displaystyle{ k \geq b+1 }[/math], then [math]\displaystyle{ b^{k-1} \gt (k){(b - 1)}^{b-1} }[/math], so any [math]\displaystyle{ n }[/math] will satisfy [math]\displaystyle{ n \gt F_b(n) }[/math] until [math]\displaystyle{ n \lt b^{b+1} }[/math]. There are a finite number of natural numbers less than [math]\displaystyle{ b^{b+1} }[/math], so the number is guaranteed to reach a periodic point or a fixed point less than [math]\displaystyle{ b^{b+1} }[/math], making it a preperiodic point. This means also that there are a finite number of perfect digit-to-digit invariant and cycles for any given base [math]\displaystyle{ b }[/math].

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

Perfect digit-to-digit invariants and cycles of Fb for specific b

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

Convention 00 = 1

Base Nontrivial perfect digit-to-digit invariants ([math]\displaystyle{ n \neq 1 }[/math]) Cycles
2 10 [math]\displaystyle{ \varnothing }[/math]
3 12, 22 2 → 11 → 2
4 131, 313 2 → 10 → 2
5 [math]\displaystyle{ \varnothing }[/math]

2 → 4 → 2011 → 12 → 10 → 2

104 → 2013 → 113 → 104

6 22352, 23452

4 → 1104 → 1111 → 4

23445 → 24552 → 50054 → 50044 → 24503 → 23445

7 13454 12066 → 536031 → 265204 → 265623 → 551155 → 51310 → 12125 → 12066
8 405 → 6466 → 421700 → 3110776 → 6354114 → 142222 → 421 → 405
9 31, 156262, 1656547
10 3435
11
12 3A67A54832

Convention 00 = 0

Base Nontrivial perfect digit-to-digit invariants ([math]\displaystyle{ n \neq 0 }[/math], [math]\displaystyle{ n \neq 1 }[/math])[1] Cycles
2 [math]\displaystyle{ \varnothing }[/math] [math]\displaystyle{ \varnothing }[/math]
3 12, 22 2 → 11 → 2
4 130, 131, 313 [math]\displaystyle{ \varnothing }[/math]
5 103, 2024

2 → 4 → 2011 → 11 → 2

9 → 2012 → 9

6 22352, 23452

5 → 22245 → 23413 → 1243 → 1200 → 5

53 → 22332 → 150 → 22250 → 22305 → 22344 → 2311 → 53

7 13454
8 400, 401
9 30, 31, 156262, 1647063, 1656547, 34664084
10 3435, 438579088
11 [math]\displaystyle{ \varnothing }[/math] [math]\displaystyle{ \varnothing }[/math]
12 3A67A54832

Programming examples

The following program in Python determines whether an integer number is a Munchausen Number / Perfect Digit to Digit Invariant or not, following the convention [math]\displaystyle{ 0^0 = 1 }[/math].

num = int(input("Enter number:"))
temp = num
s = 0.0
while num > 0:
     digit = num % 10
     num //= 10
     s+= pow(digit, digit)
     
if s == temp:
    print("Munchausen Number")
else:
    print("Not Munchausen Number")

The examples below implements the perfect digit-to-digit invariant function described in the definition above to search for perfect digit-to-digit invariants and cycles in Python for the two conventions.

Convention 00 = 1

def pddif(x: int, b: int) -> int:
    total = 0
    while x > 0:
        total = total + pow(x % b, x % b)
        x = x // b
    return total

def pddif_cycle(x: int, b: int) -> list[int]:
    seen = []
    while x not in seen:
        seen.append(x)
        x = pddif(x, b)
    cycle = []
    while x not in cycle:
        cycle.append(x)
        x = pddif(x, b)
    return cycle

Convention 00 = 0

def pddif(x: int, b: int) -> int:
    total = 0
    while x > 0:
        if x % b > 0:
            total = total + pow(x % b, x % b)
        x = x // b
    return total

def pddif_cycle(x: int, b: int) -> list[int]:
    seen = []
    while x not in seen:
        seen.append(x)
        x = pddif(x, b)
    cycle = []
    while x not in cycle:
        cycle.append(x)
        x = pddif(x, b)
    return cycle

See also

References

  1. 1.0 1.1 van Berkel, Daan (2009). "On a curious property of 3435". arXiv:0911.3038 [math.HO].
  2. Olry, Regis and Duane E. Haines. "Historical and Literary Roots of Münchhausen Syndromes", from Literature, Neurology, and Neuroscience: Neurological and Psychiatric Disorders, Stanley Finger, Francois Boller, Anne Stiles, eds. Elsevier, 2013. p.136.
  3. Daan van Berkel, On a curious property of 3435.
  4. Parker, Matt (2014). Things to Make and Do in the Fourth Dimension. Penguin UK. p. 28. ISBN 9781846147654. https://books.google.com/books?id=AOu2AwAAQBAJ&pg=PT28. Retrieved 2 May 2015. 
  5. Narcisstic Number, Harvey Heinz
  6. Wells, David (1997). The Penguin Dictionary of Curious and Interesting Numbers. London: Penguin. p. 185. ISBN 0-14-026149-4. 

External links