lunes, 18 de septiembre de 2023

Persistencia multiplicativa

Neil Sloane introdujo este término en su artículo [The persistence of a number, J. Recreational Math., 6 (1973), 97-98] En él define esta persistencia multiplicativa (existe otra muy popular, aditiva) de la forma siguiente:

Se multiplican las cifras del número (aquí sólo veremos las de base 10) y se reitera esta operación con los números obtenidos. Estos productos, como veremos, formarán una sucesión decreciente, y se cuentan las iteraciones necesarias hasta llegar a un producto de una sola cifra. Al número de esos pasos se le denomina índice de persistencia multiplicativa, y al número final resultante, raíz digital multiplicativa del número (existe otra raíz digital aditiva).

Lo vemos con un ejemplo: Iniciamos con el número 762. El producto de sus cifras es 84. Multiplicamos cifras de nuevo, resultando 32, y reiteramos:

762 – 84 – 32 – 6

El que los productos sean decrecientes es fácil de entender. Si el número es de una cifra, no hay producto y el índice lo definimos como 0. Si tiene dos cifras, sean a y b se tiene:

N=10*a+b>10*a>a*b, luego decrece.

Es fácil usar el mismo razonamiento cada vez que se añada una cifra:

100a+10b+c>10*10*a>a*b*c

Y así ocurrirá al ir añadiendo cifras.

Si uno de los productos posee una cifra 0, se terminará el proceso y su raíz digital valdrá 0. Paul Erdős sugirió ignorar los ceros en el producto, lo que daría lugar a procesos totalmente distintos.

Si dos números coinciden en sus cifras salvo en la cifra 1, tendrán la misma persistencia, como ocurre con 65, 165, 56111,... porque el producto de sus cifras es 30 en todos los casos.

Si dos números son anagramáticos (mismas cifras con la misma frecuencia) coincidirán también en sus resultados. Por tanto:

El proceso de persistencia es invariante al orden de las cifras y a la presencia de la cifra 1, con cualquier frecuencia.

Es fácil entender que el coincidir en la persistencia creará clases de equivalencia en los números naturales, e igual ocurrirá con los que coincidan en la misma raíz digital. Serán clases distintas, e incluso podemos considerar las clases en las que se coincida en los dos números, índice y raíz.

A continuación traduciremos todo esto a los procedimientos de las hojas de cálculo.

 Uso de una hoja de cálculo

Para estudiar este tema necesitamos varios procesos:

    Extraer las cifras de un número dado

    Proceder al producto de las cifras

    Construir el algoritmo de iteraciones hasta llegar a la raíz digital

    Expresión de los resultados, que pueden ser el índice de persistencia, la raíz digital o una cadena de texto que unifique ambos.

Procederemos por pasos.

Extracción de cifras

Este `proceso es habitual en nuestros trabajos. Existen varias técnicas, y hemos elegido esta:

Public Function cifra(m, n)

'Extrae la cifra n del número m si es natural. En caso contrario devuelve -1. También devuelve -1 si excede del número de cifras

Dim a, bIf esnatural(m) Then ‘Actúa sobre naturales
If n > numcifras(m) Then ‘La función numcifras se añadirá a continuación
cifra = -1
Else
a = 10 ^ (n - 1)
b = Int(m / a) - 10 * Int(m / a / 10) ‘Procedimiento de troceado de la cifra
cifra = b
End If
Else
cifra = -1
End If
End Function

Conteo de las cifras

Public Function numcifras(n)

Dim nn, a
'Calcula el número de cifras enteras de un número natural. Si no lo es, devuelve un cero
If esnatural(n) Then
a = 1: nn = 0
While a <= n
a = a * 10: nn = nn + 1 ‘Va multiplicando por 10 hasta llegar a n
Wend
numcifras = nn
Else
numcifras = 0
End If
End Function

Producto de cifras

Si poseemos una forma de extraer las cifras y otra de contarlas, construir su producto es fácil:

Public Function producifras(n)

Dim a, b, p, i
p = 1 ’Recogerá el producto
a = numcifras(n) ’Se cuentan las cifras
For i = 1 To a
p = p * cifra(n, i) ’Construcción del producto
Next i
producifras = p
End Function

Todas las funciones presentadas, aunque están escritas para VBasic, tienen traducción inmediata a otros lenguajes de programación.

Una vez que contamos con la función producto, es fácil organizar el proceso de persistencia. En un primer paso fijaremos que el resultado del proceso se nos devuelva en modo texto con todos los pasos y resultados. Para estadísticas cambiaremos el resultado o bien sólo al índice o a la raíz digital. La función correspondiente puede ser esta:

Cálculo de la persistencia

Function persistencia$(n) ‘Resultado en modo texto

Dim s$
Dim a, q
s = Str$(n) + ", " ‘Inicio del resultado
a = n ‘Variable que recoge el valor de n
q = 0 ‘Inicio del índice para números de una cifra
While numcifras(a) > 1
a = producifras(a) ‘Proceso de persistencia
s = s + Str$(a) + ", " ‘Incorporación al resultado
q = q + 1
Wend
s = s + "Índice: " + Str$(q) + " Raíz digital: " + Str$(a) ‘Creación del resultado
persistencia = s
End Function

Con esta función obtenemos el historial completo del proceso. En la siguiente tabla hemos elegido un intervalo de números al azar:


Se percibe un desequilibrio en los resultados. Es evidente la gran mayoría de resultados con raíz digital cero, pues la presencia de esa cifra detiene el proceso. Respecto a los índices, ninguno es mayor que 3. Escasean los índices mayores. Por ejemplo, el índice 11 no aparece hasta el número 10233.

Hemos construido una tabla de frecuencias para las raíces digitales del 0 al 9999, para hacer patente el desequilibrio entre ellas:

Aparte del caso del 0, es lógico que las frecuencias de 3 y el 7 sean tan pequeñas, pues muy pocos productos desembocarán en ellas. En el caso del

7, basta observar qué números desembocan en él:

17, 71, 117, 171, 711, 1117, 1171, 1711, 7111

También esta lista justifica el resultado del 9, porque todas las posibilidades de combinar la cifra 1 con la 7 son 2+3+4=9. Es fácil generalizar este resultado a más cifras.

Persistencia con potencias de cifras

El producto de cifras se puede construir con potencias de las mismas. Hablaríamos entonces de k-persistencia multiplicativa. Todos los números, salvo los “repunits”,1, 11, 111, …que tienen k-raíz digital 1, todos los demás poseen raíz 0. Lo hemos comprobado modificando nuestra función. Este hecho resta interés a este concepto.

 

No hay comentarios: