lunes, 24 de mayo de 2021

Una curiosidad no buscada

En el mes de marzo, mientras estudiaba los cálculos que publico en Twitter (@connumeros), descubrí esta curiosidad, y es que unos números consecutivos o cercanos presentaban divisores con una estructura muy similar. Estos eran:

13322 es múltiplo de 6661, pues 13322=2*6661

13323, lo es de 4441, ya que 13323=3*4441

13324, de 3331, pues se cumple 13324=4*3331

Por último, 13326 lo es de 2221: 13326=6*2221

Parece que la clave la tiene el número 13332=2*6666=3*4444=4*3333=6*2222. Si en estos cuatro productos convertimos la última cifra en un 1, resultan los números de arriba:

2*(6666-5)=2*6661=13322=13332-10

3*(4444-3)=3*4441=13323=13332-9

4*(3333-2)=4*3331=13324=13332-8

6*(2222-1)=6*2221=13326=13332-6

El que las diferencias sean 10, 9, 8 y 6 produce que tres productos sean consecutivos y el último alterno: 13322, 13323, 13324 y 13326.

Esta sería la explicación sencilla para esta curiosidad, y también funciona con 1322, 1323, 1324 y 1326, ya que 1322 es múltiplo de 661 y los siguientes de 441, 331 y 221 respectivamente. Evidentemente, también sería esto de aplicación a los números 133322 y siguientes con la misma estructura.

¿Habrá más casos similares a este? Organizaremos una búsqueda.

 

Primer paso: divisores adecuados

Por concretar el problema, admitiremos como divisores adecuados aquellos del tipo 221, 331, 441,…2221, 3331, 4441,…22221, 33331, 44441,…Es decir, que las primeras cifras sean todas iguales y distintas de 1, mientras que la última ha de valer 1. Desechamos, pues los repidígitos 11111… y también 21, 31, 41,…porque en estos últimos no de da repetición.

Para saber si un número es divisor adecuado podemos usar el conjunto de cifras convirtiendo el número en un string, o bien usar los restos módulo 10^k. Optamos por este segundo método. Esta sería la función para detectar este tipo de divisores en VBASIC de Excel:

Function esrepe1(n)

Dim i, c, f, g

Dim es As Boolean

n < 221 Then esrepe1 = False: Exit Function ‘Se estudian los superiores a 221

c = Int(Log(n) / Log(10) + 1) ‘Cálculo del número de cifras

es = True ‘Se supone que sí es adecuado

f = (n Mod 100) \ 10 ‘Calcula la segunda cifra, que no debe valer 1

g=n Mod 10 ‘Calcula la primera cifra, que ha de valer 1

If f = 1 or g<>1 Then esrepe1 = False: Exit Function ‘No es adecuado

i = 2 ‘Se recorre el resto de cifras

While i <= c And es = True

If f <> (n Mod 10 ^ i) \ 10 ^ (i - 1) Then es = False ‘Si una cifra es diferente, no es adecuado

i = i + 1

Wend

esrepe1 = es

End Function

 

Con esta función encontramos algo que ya sabíamos, que estos son los primeros divisores adecuados:

221, 331, 441, 551, 661, 771, 881, 991, 2221, 3331, 4441, 5551, 6661, 7771, 8881, 9991, 22221, 33331, 44441,…

Aunque los conozcamos nosotros, debe poderlos identificar también la hoja de cálculo.

En el lenguaje PARI construimos la función en tres pasos:

digit(a, q)=(a%10^q)\10^(q-1)

numdigit(n)=truncate(log(n)/log(10))+1 )

isrep1(n)={my(c=numdigit(n),e=0,f,i);if(n>=221&&digit(n,1)==1,f=digit(n,2);if(f<>1,e=1;i=2;while(i<=c&&e==1,if(f<>digit(n,i),e=0);i+=1)));e}

La función digit extrae una cifra del número, numdigit calcula el número de cifras y isrep1 determina si es adecuado.

 Si le añadimos un bucle de búsqueda, obtendremos el mismo listado.

 

Segundo paso: Múltiplos de esos divisores

Un segundo paso consistirá en descubrir candidatos a la propiedad buscada entre los múltiplos de los divisores adecuados.

Usaremos esta función de Excel y más adelante otra de PARI. En las búsquedas es bueno disponer de dos métodos para comprobar que resultan las mismas soluciones.

En Excel

Function multirepe(n) ‘Determina si n posee un divisor adecuado.

Dim i, r

Dim es

 If esrepe1(n) Then multirepe = True: Exit Function ‘Si es adecuado, ya hemos terminado.

es = False ‘Comenzamos suponiendo que no lo es

i = 221 ‘Inicio de búsqueda de divisores

While i <= n And Not es

If esrepe1(i) Then

If n / i = n \ i Then es = True ‘Si es un divisor y además adecuado, será válido

End If

i = i + 1

Wend

multirepe = es

End Function

 

Obtenemos este listado de posibles inicios de conjuntos con la propiedad pedida

221, 331, 441, 442, 551, 661, 662, 663, 771, 881, 882, 884, 991, 993, 1102, 1105, 1322, 1323, 1324, 1326, 1542, 1547, 1653, 1655, 1762, 1764, 1768, 1982, 1983, 1986, 1989, 2204, 2205, 2210, 2221, 2313, 2317, 2431, 2643, 2644, 2646, 2648, 2652, 2755, 2873, 2973, 2979,…

En PARI

Con PARI podemos usar esta definición de cuatro filas:

digit(a, q)=(a%10^q)\10^(q-1)

numdigit(n)=truncate(log(n)/log(10))+1

isrep1(n)={my(c=numdigit(n),e=0,f,i);if(n>=221&&digit(n,1)==1,f=digit(n,2);if(f<>1,e=1;i=2;while(i<=c&&e==1,if(f<>digit(n,i),e=0);i+=1)));e}

multirep(n)={my(s=0,i=1);while(i<=n&&s==0,if(n/i==n\i&&isrep1(i),s=1);i+=1);s}

 Este es el resultado en la web de PARI:


En estos listados ya se percibe que 661, 662 y 663 cumplen lo exigido, pero no 665. Más adelante figuran 1322, 1323, 1324 y 1326 que sí lo cumplen. Esto refuerza nuestra confianza en los métodos de búsqueda.

Ahora sólo nos queda, y será una búsqueda lenta, encontrar conjuntos de cuatro números, los tres primeros consecutivos y el cuarto alterno, que sean múltiplos de los divisores adecuados. Nos costará bastantes minutos en un ordenador personal.

Después de buscar, sólo se han obtenido los resultados previstos: 1322, 13322, 133322,…

Así que es una propiedad poco frecuente, ligada a los números 666, 6666, 66666,…No hay más búsquedas.

No hay comentarios: