En teoría de números , un invariante perfecto dígito a dígito ( PDDI ; también conocido como número de Munchausen [1] ) es un número natural en una base numérica dada que es igual a la suma de sus dígitos, cada uno elevado a su propia potencia. 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, [2] ya que evoca la historia del barón Munchausen levantándose de su propia cola de caballo porque cada dígito se eleva a su propia potencia. [3] [4]
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 . Definimos la función como . (Como 0 normalmente no está definido, normalmente se utilizan dos convenciones, una donde se toma como igual a uno y otra donde se toma como igual a cero. [5] [6] ) Un número natural se define como un invariante perfecto de 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 todos , y por lo tanto 1 es un invariante dígito a dígito perfecto trivial en todas las bases, y todos los demás invariantes dígito a dígito perfectos no triviales son . Para la segunda convención donde , tanto como son invariantes dígito a dígito perfectos triviales.
Un número natural es un invariante sociable de dígito a dígito si es un punto periódico para , donde para un entero positivo , y forma un ciclo de período . Un invariante perfecto de dígito a dígito es un invariante sociable de dígito a dígito con . Un invariante amistoso de dígito a dígito es un invariante sociable de dígito a dígito 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 . Sin embargo, cuando , entonces , por lo que cualquier satisfará hasta . Hay un número finito de números naturales menores que , por lo que se garantiza que el número alcance un punto periódico o un punto fijo menor que , lo que lo convierte en un punto preperiódico. Esto también significa que hay un número finito de invariantes dígito a dígito y ciclos perfectos para cualquier base dada .
El número de iteraciones necesarias para alcanzar un punto fijo es la persistencia de la función -factorión de , y es indefinido si nunca alcanza un punto fijo.
Todos los números están representados en base .
El siguiente programa en Python determina si un número entero es un número de Munchausen / invariante perfecto de dígito a dígito o no, siguiendo la convención .
num = int ( input ( "Ingrese el número:" )) temp = num s = 0.0 while num > 0 : digit = num % 10 num //= 10 s += pow ( digit , digit ) si s == temp : print ( "Número de Munchausen" ) de lo contrario : print ( "No es Número de Munchausen" )
Los ejemplos a continuación implementan la función invariante perfecta de dígito a dígito descrita en la definición anterior para buscar invariantes y ciclos perfectos de dígito a dígito en Python para las dos convenciones.
def pddif ( x : int , b : int ) -> int : total = 0 mientras x > 0 : total = total + pow ( x % b , x % b ) x = x // b devuelve totaldef pddif_cycle ( x : int , b : int ) - > lista [ int ]: visto = [] mientras x no está en visto : visto.append ( x ) x = pddif ( x , b ) ciclo = [ ] mientras x no está en ciclo : ciclo.append ( x ) x = pddif ( x , b ) devolver ciclo
def pddif ( x : int , b : int ) -> int : total = 0 mientras x > 0 : si x % b > 0 : total = total + pow ( x % b , x % b ) x = x // b devuelve totaldef pddif_cycle ( x : int , b : int ) - > lista [ int ]: visto = [] mientras x no está en visto : visto.append ( x ) x = pddif ( x , b ) ciclo = [ ] mientras x no está en ciclo : ciclo.append ( x ) x = pddif ( x , b ) devolver ciclo