En teoría de números, un invariante perfecto dígito a dígito (PDDI por las siglas del término inglés "perfect digit-to-digit invariant"; también conocido como número de Munchausen) es un número natural en una base dada que es igual a la suma de sus dígitos, cada uno elevado a una potencia igual a sí mismo.

Un ejemplo en base 10 es 3435, porque:   .

El término "número de Munchausen" fue acuñado por el matemático e ingeniero de software holandés Daan van Berkel en 2009,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. ya que evoca la historia del Barón de Münchhausen que se levantaba del suelo tirando de su propia coleta, lo que sirve de referencia a que cada dígito se debe elevar a una potencia igual a sí mismo.Daan van Berkel, On a curious property of 3435.

Definición Sea un número natural que se puede escribir en base como el número de k dígitos donde cada dígito está entre y inclusive, y . Se define la función como .

Como 00 no siempre está definido, se usan dos convenciones, una en la que se considera que es igual a uno y otra en la que se considera que es igual a cero.Narcisstic Number, Harvey Heinz

Un número natural se define como un invariante perfecto dígito a dígito en base b si . Por ejemplo, el número 3435 es un invariante perfecto de dígito a dígito en base 10 porque

para todo , y por lo tanto 1 es un invariante perfecto dígito a dígito "trivial" en todas las bases, y todos los demás invariantes dígito a dígito perfectos son "no triviales". Para la segunda convención donde , tanto como son invariantes perfectos de dígito a dígito triviales.

Un número natural es un invariante dígito a dígito sociable si es un punto periódico para , donde para un entero positivo , y forma un ciclo de período . Un invariante perfecto dígito a dígito es un invariante sociable dígito a dígito con . Un invariante dígito a dígito amistoso es un invariante dígito a dígito sociable con .

Todos los números naturales son puntos preperiódicos para , independientemente de la base. Esto se debe a que todos los números naturales de base con dígitos satisfacen que . Sin embargo, cuando , , por lo que cualquier satisfará a hasta .

Hay un número finito de números naturales menor que , por lo que se garantiza que el número alcanzará un punto periódico o un punto fijo menor que , convirtiéndolo en un punto preperiódico. Esto también significa que hay un número finito de invariantes dígito a dígito perfectos y ciclos para cualquier base dada .

El número de iteraciones necesarias para que alcance un punto fijo es la función de persistencia -factorión de , e indefinido si nunca llega a un punto fijo.

Invariantes y ciclos perfectos dígito a dígito de Fb para b específica Todos los números están representados en la base . Convención 00 = 1 Base Invariantes dígito a dígito perfectos no triviales () Ciclos 2 10 3 12, 22 2 → 11 → 2 4 131, 313 2 → 10 → 2 5 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

Convención 00 = 0 Base Invariantes dígito a dígito perfectos no triviales (, ) Ciclos 2 3 12, 22 2 → 11 → 2 4 130, 131, 313 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 12 3A67A54832

Ejemplos de programación

Python El siguiente programa en Python determina si un número entero es un Número de Munchausen (o invariante perfecto dígito a dígito) o no, siguiendo la convención .

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")

Los ejemplos siguientes desarrollan la función invariante de dígito a dígito perfecta descrita en la definición anterior en Python para las dos convenciones.

Convención 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

Convención 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

Java El siguiente programa en Java determina si un número entero es un Número de Munchausen o no, siguiendo la convención .

import java.util.Scanner; public class Munchausen { public static void main ()

Scanner in = new Scanner (System.in); System.out.println("Enter number:"); int num = in.nextInt(), temp = num, digit; double sum = 0; while (num>0) { digit = num % 10; num /= 10; sum += Math.pow(digit, digit);

if (sum == temp) System.out.print("Munchausen Number"); else System.out.print("Not Munchausen Number");

Véase también

Referencias

Enlaces externos

Los números de Munchausen (gaussianos.com)

Munchhausen Categoría:Matemática recreativa