miércoles, 6 de abril de 2022

Relaciones entre números con cifras simétricas

Efectuar comparaciones teóricas basadas en las cifras de un número en base diez no es muy matemático, por lo que consideraré este tema como un mero entretenimiento. Su objetivo principal será el de practicar funciones, búsquedas y algoritmos. Estudiaremos números simétricos en sus cifras, en los que las de uno sean iguales a las del otro, pero en orden inverso. Para evitar casos ambiguos o singulares, prescindiremos de los múltiplos de 10, para así no considerar el cero a la izquierda que supone, en realidad, que el número de cifras es distinto en ambos, el número y su simétrico. También, en algunas cuestiones no consideraremos los números capicúas o palindrómicos.

Recorreremos algunas propiedades que pueden presentar ambos, número y simétrico.

La diferencia es divisor de ambos

En Excel poseemos una función propia de autor, CIFRAINVER, que transforma un número en su simétrico en cifras. Como explicarla no es un objetivo de este texto, la incluimos en un Anexo al final de la entrada. El resultado de esta función se puede manejar como un número y operar con él normalmente. Así, la diferencia entre un número y su simétrico vendrá dada por d=n-CIFRAINVER(n) y si no es nulo (sería un capicúa) nos preguntaremos si ambos números simétricos son múltiplos de d. Buscamos esas condiciones y obtendremos las soluciones:

45, 54, 495, 594, 4356, 4545, 4995, 5454, 5994, 6534, 10890, 19602, 20691, 29403, 30492, 39204, 40293, 43956, 45045, 49005, 49995, …

Si la diferencia entre dos números es divisor de ambos, sabemos que será su máximo común divisor, lo que sería una definición alternativa de esta búsqueda.

Por ejemplo, 59994-49995=9999, que es M.C.D. de ambos, como puedes comprobar con la fórmula M.C.D(59994;49995).

Para confeccionar una lista podríamos exigir que cada término fuera menor que su simétrico, y así se evitarían duplicaciones en los pares de números, como ha ocurrido con 495 y 594.

Planteado así, resultan los siguientes términos de una sucesión:

45, 495, 4356, 4545, 4995, 19602, 29403, 39204, 43956, 45045, 49005, 49995, 68607, 197802, 296703, 395604, 439956, 450045, 454545, 494505, 495495, 499995, 593406, 692307, 791208, 890109, 1979802, 2969703, 3959604, 4399956, 4500045, 4549545, 4949505, 4950495, 4999995, 5939406, 6929307, 7919208, 8909109,…

Entre ellos figuran los números del tipo 4999..995. Es fácil encontrar la causa, ya que estos números equivalen a 5*(10k-1), y sus simétricos (del 5999…994) tienen la forma 6*(10k-1). Al restarlos resulta 6*10k-6-5*10k+5=10k-1=999…99, que divide a ambos. Cuando ocurre esto, sabemos por el algoritmo de Euclides, que la diferencia será el M.C.D.

Puedes efectuar razonamientos similares con 4545…45 y con 4500…045.

Con el lenguaje PARI se consigue el mismo resultado. Hemos usado el siguiente código:

ok(n)={my(k,d);k=eval(concat(Vecrev(Str(n))));d=abs(n-k);n%10<>0&&d==gcd(n,k)&&n<k}

for(i=1,100000,if(ok(i),print1(i,”, “)))

Con él se consigue la misma sucesión:


El cuadrado de uno es simétrico con el del otro

En esta serie de búsquedas estamos tratando con números simétricos en la base de numeración 10. Por eso viene bien un regreso a una de nuestras entradas de hace años, en la que proponíamos algunos retos.

https://hojaynumeros.blogspot.com/2009/03/cuadrado-del-simetrico-o-simetrico-del.html

En concreto,  se basaban en una mención de una propiedad publicada por Claudi Alsina, en su libro “Vitaminas matemáticas”, y es que el número 12 presenta la siguiente propiedad: 122 = 144 y 212 = 441, es decir, que el cuadrado de su número simétrico en cifras coincide con el simétrico de su cuadrado.

Con el uso de nuestra función CIFRAINVER podemos ampliar y resolver por algoritmo las propuestas que se efectuaban sobre esta situación. Usaremos una función con una sola línea, que devolverá si esta propiedad se verifica (VERDADERO) o no (valor FALSO). Es esta:

 

Function cuadsimetrico(n) As Boolean

Dim m

m = cifrainver(n)

cuadsimetrico = (n ^ 2 = (cifrainver(m ^ 2)) And n < m)

End Function

En ella se asigna como valor de salida la igualdad entre el cuadrado del número y el simétrico del cuadrado del simétrico. Se le añade la condición de que el número sea menor que su simétrico, para evitar palíndromos y repeticiones. Con ella se puede reproducir la lista de soluciones propuesta en esta antigua entrada:

12, 13, 102, 103, 112, 113, 122, 1002, 1003, 1011, 1012, 1013, 1021, 1022, 1031, 1102, 1103, 1112, 1113, 1121, 1122, 1202, 1212, 2012, 2022, 10002, 10003, 10011, 10012, 10013, 10021, 10022, 10031, 10102, 10103, 10111, 10112, 10113, 10121, 10122, 10202, 10211, 10212, 10221, 11002, 11003, 11012, 11013, 11021, 11022, 11031, 11102, 11103, 11112, 11113, 11121, 11122, 11202, 12002, 12012, 12102, 12202, 20012, 20022, 20112, 20122,

En http://oeis.org/A106323 figura una sucesión similar, y con casi todos los elementos comunes, pero no exige que las bases de los cuadrados sean simétricas. Por eso admite el 33 y el 3168.

En la entrada recordada se razonaba que en estos números no podían figurar las cifras comprendidas entre 4 y 9, porque producirían arrastres de cifras al calcular su cuadrado. Por una razón similar, no existen soluciones que terminen en 23, pues 2*3+3*2=12 y produce un arrastre de 1.

 

El producto de simétricos produce un capicúa

Para encontrar las soluciones usamos una función similar a la de la cuestión anterior:

Public Function producapicua(n) As Boolean

Dim m

m = cifrainver(n)

producapicua = escapicua(n * m) And n < m

End Function

En ella exigimos que el producto de simétricos sea capicúa y que el número devuelto por la función sea el menor del par.

La función escapicua se limita a exigir que cifrainver(n)=n

El listado obtenido con ella es:

12, 21, 102, 112, 122, 201, 211, 221, 1002, 1011, 1012, 1021, 1022, 1101, 1102, 1112, 1121, 1201, 1202, 1211, 2001, 2011, 2012, 2021, 2101, 2102, 2111, 2201, 10002, 10011, 10012, 10021, 10022, 10102, 10111, 10112, 10121,…

Vemos que aquí también existe restricción de cifras, por una cuestión de arrastres en las operaciones de multiplicar.

 Hemos tomado el menor. Si consideramos el par de simétricos, encontraremos la sucesión en http://oeis.org/A048344:

A048344              a(n) * a(n)_reversed is a palindrome (and a(n) is not palindromic).      

12, 21, 102, 112, 122, 201, 211, 221, 1002, 1011, 1012, 1021, 1022, 1101, 1102, 1112, 1121, 1201, 1202, 1211, 2001, 2011, 2012, 2021, 2101, 2102, 2111, 2201, 10002, 10011, 10012, 10021, 10022, 10102, 10111, 10112, 10121, 10202, 10211, 11001

No exige que el número sea menor que su simétrico. Por eso se obtiene el doble de soluciones.

Un ejemplo: 2102*2012=4229224

Los dos simétricos son del mismo tipo

Si usamos las funciones propias escuad, estriangular o esoblongo, por ejemplo (puedes buscarlas  en este blog) obtendremos los simétricos que coinciden en su tipo.

Primos

El caso de primos está muy estudiado, y se les llama omirp o emirp en inglés (ver http://oeis.org/A006567)

En este blog hemos estudiado los “palprimos”, o primos palindrómicos:

https://hojaynumeros.blogspot.com/2016/05/palprimos-primos-palindromicos.html

Triangulares

Para encontrar números triangulares simétricos y que no sean capicúas ni múltiplos de 10 (para que tengan igual número de cifras) podemos usar esta condición:

 a=cifrainver(i)

estriangular(i) And estriangular(a) And i < a And i / 10 <> i \ 10

Al exigir que i<a nos quedamos con los valores menores de cada par. Hay pocos, por lo que entre 1 y 20000 sólo hemos encontrado 153 y 17578. No hemos seguido, porque ya están publicados en

http://oeis.org/A066528:

153, 351, 17578, 87571, 185745, 547581, 1461195, 5911641, 12145056, 12517506, 60571521, 65054121, 304119453, 354911403,…

Con nuestra función Ordentriang (también la puedes buscar en este blog) podemos comprobar alguno de los pares:

12517506=5003*5004/2       

60571521=11006*11007/2

Ambos son triangulares.

No hay más que añadir, ya se indicó que este tema es poco matemático.

Cuadrados

Es la misma cuestión que planteamos antes, pero sin exigir que si los números son cuadrados, las bases también lo sean. Si seguimos exigiendo que no sean capicúas ni múltiplos de 10, queda como condición

a = cifrainver(i)

escuad(i) And escuad(a) And i < a And i / 10 <> i \ 10

Obtenemos:

Coinciden con los publicados en http://oeis.org/A156316

Oblongos

Hay pocos ejemplos. Hemos encontrado tres sin esfuerzo:

29756, 2150622, 2898506.

Aquí podemos comprobar que ambos son oblongos:

29756 =172*173

65792 =256*257

 

2150622 =1466*1467

2260512 =1503*1504

 

2898506 =1702*1703

6058982 =2461*2462

 

Cubos

No parecen existir soluciones con menores que 2*10^7

Si exigimos que ambos sean son suma de cubos, ahí sí existen soluciones (figuran los menores de cada par y no múltiplos de 10):

1008, 1332, 1339, 4608, 13895, 14364, 16263, 19773, 27027, 32535, 39528, 107136, 119853, 157248, 158184, 179513, 195237, 199143, 318968, 373464, 399665, 406224, 422218, 476379,

Por ejemplo, 27027=30^3+3^3 y 72072 =32^3+34^3

Esto no da más de sí. Ya se advirtió al principio que era un tema poco matemático, pero igual alguien que lea esta entrada le puede servir para que se le ocurran ideas similares.


ANEXO

Función CIFRAINVER

Convierte un número en su simétrico en cifras. Lo devuelve como tal número, por lo que se puede operar con él con las distintas operaciones matemáticas y funciones.

 

Public Function cifrainver(n)

Dim l, i

Dim c

Dim auxi$, auxi2$, ci$

' invierte el orden de las cifras para dar otro

If n < 10 Then cifrainver = n: Exit Function  ‘Número de una cifra

auxi = haztexto(n) ‘Convierte el número en texto

auxi2$ = ""

l = Len(auxi)

For i = l To 1 Step -1 ‘Va volcando las cifras en otro texto en orden inverso

ci$ = Mid(auxi, i, 1)

auxi2 = auxi2 + ci$

Next i

c = Val(auxi2$) ‘Convierte el nuevo texto en número

cifrainver = c

End Function

 

 

 

jueves, 24 de marzo de 2022

Los números cuadrados (2)

Seguimos en esta segunda entrada dedicada a los números cuadrados con propiedades de recurrencia y relativas a sumas y las identidades entre ellas.

Recurrencias

Hay varios métodos recursivos para calcular números cuadrados. Ninguno es especialmente útil, y se presentan aquí como una curiosidad.

Suma de un impar

Es consecuencia de la definición como suma de impares, y es que al cuadrado anterior le sumamos el doble de su lado incrementado en una unidad. Por ejemplo, 72+2*7+1=64=82

Se puede plasmar en esta función recursiva de Excel:

Public Function cuadrado_r(n)

If n = 1 Then

cuadrado_r = 1

Else

cuadrado_r = 2 * n - 1 + cuadrado_r(n - 1)

End If

End Function

Funciona bien para números no muy grandes, pero puede fallar, por lo que la dejamos como una curiosidad.

Mediante los dos anteriores

C(n)=2C(n-1)-C(n-2)+2

Es fácil de demostrar: n2=2(n-1)2-(n-2)2+2=2n2-4n+2-n2+4n-4+2=n2

Así, de C(1)=1 y C(2)=4 obtenemos C(3)=2*4-1+2=9, C(4)=2*9-4+2=16,…

Recurrencia general para poligonales

Todos los números poligonales siguen la fórmula P(n,k)=3P(n,k-1)-3P(n,k-2)+P(n,k-3), que en nuestro caso quedaría como

C(n)=3C(n-1)-3C(n-2)+C(n-3)

Su ventaja radicaría en que usa cuadrados nada más, y no números aislados. Esto la convierte en una recurrencia de tercer orden homogénea, y la podemos tratar con nuestra hoja correspondiente:

http://www.hojamat.es/sindecimales/aritmetica/herramientas/herrarit.htm#recurre2

Bastará dar como coeficiente 3, -3, 1 y como elementos iniciales 0, 1, 4:

Pulsando sobre el botón de “Ver sucesión” crearemos una columna de cuadrados,


 

Sumas

La suma de los primeros números cuadrados viene dada por una de las fórmulas de Faulhaber.

(ver https://es.wikipedia.org/wiki/F%C3%B3rmula_de_Faulhaber)

La correspondiente a los números cuadrados es la siguiente:

Es sencillo demostrarla por inducción completa. Aquí lo haremos restando la expresión correspondiente a n y la de n-1, para ver que el resultado es el nuevo cuadrado añadido. Así se ve en la calculadora Wiris:

Como curiosidad, aplicaremos nuestra herramienta de interpolación de Newton a las primeras sumas de cuadrados, 1, 5, 14, 30, 55…Es un tema complementario, que se puede ignorar:

Interpolación

Descargamos la hoja de interpolación desde

http://www.hojamat.es/sindecimales/aritmetica/herramientas/herrarit.htm#newton

Escribimos las sumas en las celdas correspondientes:

Observamos que las diferencias de tercer orden son iguales (y la de cuarto es nula), lo que indica una función polinómica.

Leemos los coeficientes del polinomio:

Escribimos el polinomio con esos coeficientes, tal como se efectúa en la interpolación de Newton:

1+4*(X-1)+5/2*(X-1)*(X-2)+1/3*(X-1)*(X-2)*(X-3)

Como esta forma es poco legible, la simplificamos y factorizamos con Wiris:

Obtenemos la misma fórmula de Faulhaber. Aunque sea una mera curiosidad, es gratificante la coincidencia.

Teorema de los cuatro cuadrados

El teorema de los cuatro cuadrados de Lagrange establece que cualquier número entero positivo se puede escribir como la suma de cuatro o menos cuadrados perfectos. Tres cuadrados son suficientes para todos los enteros positivos salvo para números de la forma 4k(8m+7). 

Un entero positivo se puede representar como una suma de dos cuadrados precisamente si su factorización prima no contiene potencias impares de primos de la forma 4 k + 3 (Fermat-Gauss). 

También se puede expresar todo cuadrado como suma de tres cuadrados con signo. Por ejemplo, 201221 se puede expresar con estas sumas:

201221 = 11^2+685^2-518^2

201221 = 9^2+679^2-510^2

201221 = 13^2+667^2-494^2

201221 = 5^2+589^2-382^2

La cercanía entre las bases de estos cuatro ejemplos sugiere que son un subconjunto de otro mucho más amplio.

Conseguir los cuatro cuadrados (o menos) en los que se descompone cualquier entero positivo requiere algoritmos que se ralentizan cuando ese entero es grande. Un algoritmo sencillo para Excel o Calc sería el de la siguiente función, que devuelve una solución, que no tiene que ser la óptima, pero que consta de cuatro cuadrados:

Function cuatrocuad$(n)

Dim i, j, k, l

Dim s$

Dim novale As Boolean

 

s$ = ""

novale = True

i = 0

While i <= n And novale ‘Primera base de cuadrado

j = 0

While j <= i And novale ‘Segunda base

k = 0

While k <= j And novale ‘Tercera base

l = n - i ^ 2 - j ^ 2 - k ^ 2  ‘Posible cuarta base

If l >= 0 And l <= k Then

If escuad(l) Then novale = False: s = s + Str$(i) + Str$(j) + Str$(k) + Str$(l) ‘Es una solución

End If

k = k + 1

Wend

j = j + 1

Wend

i = i + 1

Wend

If s = "" Then s = "NO"

cuatrocuad = s

End Function

 

Hay que insistir en que no devuelve la mejor solución, sino la que tiene las bases menores. Así, para 9, que es cuadrado, da la solución 2^2+2^2+1^2+0^2.

Hemos elegido un intervalo de enteros positivos al azar para una sencilla comprobación del teorema:

Observamos que tres números sólo necesitan tres cuadrados.

 

Identidades

Cuadrado de suma o diferencia

Aunque son de carácter elemental, no podemos olvidar aquí los cuadrados de sumas y diferencias:

Cercana a ellas es la identidad babilónica, fácil de deducir:

Identidad de Brahmagupta

En el apartado de sumas de cuadrados no puede faltar esta identidad, muy usada en cuestiones numéricas, y que se demuestra con un simple desarrollo algebraico:

En cualquier texto de Teoría de Números se puede encontrar un uso de esta identidad.

Identidad de Euler

Euler amplió esta idea a ocho cuadrados, según podemos observar en esta imagen tomada de la página de Wikipedia https://es.wikipedia.org/wiki/Identidad_de_los_cuatro_cuadrados_de_Euler

 

 

lunes, 14 de marzo de 2022

Los números cuadrados (1)

Primeras definiciones y propiedades

Incluimos aquí el estudio de los números cuadrados, considerándolos prioritariamente como números poligonales, y dejando como complementarias las cuestiones derivadas de su naturaleza como producto n*n.

Cuadrado como n*n

La primera idea que se tiene de los números cuadrados es que son el resultado de multiplicar un número entero por sí mismo: C=n*n (por eso, a la operación n2 se le ha dado el nombre de elevar al cuadrado).

Se les llama también cuadrados perfectos. Este producto se puede representar como una matriz cuadrada de puntos.

Es conveniente disponer de un criterio para saber si un número es cuadrado. El más fiable es el de descomponer el número en factores primos y observar si todos los exponentes son pares. Esto es así porque si un número primo p divide a un cuadrado, p2 también lo divide.

Así se evitan los decimales que aparecen en otros criterios. El inconveniente radica en la programación de la extracción de factores. En el otro extremo de la definición encontramos los números libres de cuadrados, en los que todos los exponentes son impares.

Un criterio menos fiable es el de sacar la raíz cuadrada, tomar su redondeo a un número natural o su parte entera (llamada raíz cuadrada entera) y ver si al elevarla al cuadrado reconstruye el número inicial. Así se procede en esta función:

Public Function escuad(n) As Boolean

If n < 0 Then

escuad = False

Else

If n = Int(Sqr(n)) ^ 2 Then escuad = True Else escuad = False

End If

End Function

En lenguajes avanzados de programación se dispone ya de una función issquare o similar.

Esta definición permite considerar que un número cuadrado puede terminar solo con las cifras 0, 1, 4, 5, 6 o 9 en el sistema de numeración decimal. Es fácil comprobarlo multiplicando números por sí mismos. Así que un número que termine en 2, 3, 7, 8 no será cuadrado.

Esta definición de cuadrado también nos lleva a que tendrá un número impar de divisores. Si todos los exponentes de factores primos son pares, el número de divisores será un producto de impares, y por tanto impar. Puedes revisar esta idea en nuestro documento http://www.hojamat.es/sindecimales/divisibilidad/teoria/teordivi.pdf

Aquí tienes un volcado del párrafo en el que se desarrolla la fórmula correspondiente:

Este sería un buen criterio para detectar si un número es cuadrado, pero resulta largo y lento.

Cuadrado como número poligonal

La construcción de un cuadrado siguiendo los procedimientos generales de construcción de poligonales nos llevaría a un esquema como el de la imagen:

 

En ella observamos sin dificultad que el número cuadrado n2 es la suma de los primeros números impares: 1+3+5+7+9=25=52

El caso general se demuestra por inducción completa:

Si n2 equivale a la suma

(2*0+1)+(2*1+1)+(2*2+1)+(2*3+1)+…+(2*(n-1)+1),

el siguiente cuadrado, (n+1)2 es igual a n2+(2*n+1), lo que completa la suma de impares.

Así que se cumple


 Sumas de números impares consecutivos

Una consecuencia de esta propiedad es la de que cualquier suma de números impares consecutivos equivale a la diferencia entre dos cuadrados. Por ejemplo, la suma 55+57+59+…+87+89+91 se puede calcular como la diferencia entre estas dos sumas:

(1+3+5+7+…+91)-(1+3+5+7+53)=46^2-27^2

El 46 y el 27 se obtienen teniendo en cuenta, según la fórmula anterior, que los sumandos tienen la forma 2k+1.

Si se toman dos sumandos impares consecutivos, el resultado será un cuadrado par 2n*2n=4n2, pues

Si multiplicamos dos números pares (o impares) consecutivos y añadimos una unidad obtenemos también un cuadrado, pues n(n+2)+1=n2+2n+1=(n+1)2

 

Cuadrado como suma de dos triangulares

Otra generación de cuadrados viene dada, tal como vimos en el tema correspondiente, como suma de dos triangulares consecutivos. En la imagen se observa que el cuadrado 25 es la suma de los triangulares 10 y 15.

Como un triangular es un número combinatorio, esta propiedad se puede expresar como (elegimos el símbolo C(n) para representar el cuadrado de orden n):

Desde el punto de vista de los cuadrados esta relación no tiene más interés.

Cuadrado como suma de OBLONGO(N)+N+1

Otra relación que se queda en simple curiosidad es que si a un oblongo le añadimos su lado mayor, se convierte en un cuadrado.

En efecto, los oblongos vienen dados por la expresión n(n+1), y si le sumamos n+1 se convierte en n(n+1)+(n+1)=(n+1)(n+1)=(n+1)2

Esta propiedad es más sugestiva si se expresa al revés: si a un conjunto cuadrado le eliminas un lado, se convierte en oblongo.

Si al cuadrado 64 le quitamos un lado (8) nos queda 56, que es oblongo, por ser 7*8.

 

Una curiosidad

Copiamos un texto publicado por Amarnath Murthy, Mar 24 2004en la página de OEIS:

Begin with n, add the next number, subtract the previous number and so on ending with subtracting a 1: a(n) = n + (n+1) - (n-1) + (n+2) - (n-2) + (n+3) - (n-3) + ... + (2n-1) - 1 = n^2.

Como invitación a demostrarlo, insertamos ese proceso aplicado al número 12:

En la primera columna se sitúan los números consecutivos a 12 y en la segunda los anteriores. Se suman y se restan unos de otros, resultando al final 144=122.


jueves, 3 de marzo de 2022

Números de Zumkeller(2) – Otros métodos de búsqueda

En la entrada anterior se diseñó un esquema de cálculo para encontrar las particiones de igual suma, típicas de los números de Zumkeller. El procedimiento, algo lento, consistía en escribir los divisores de un número en columna, acompañarlos sucesivamente con las expresiones binarias de los números 1 a 2TAU-1 y mediante multiplicaciones, conseguir todas las particiones entre divisores:


Se afirmó en la entrada anterior que este esquema, para valores de TAU superiores a 10 o 12, era bastante lento, pero existe una forma de simplificarlo un poco. La idea es que el número estudiado entrará, con toda seguridad, en una de las dos particiones, y acompañado, en general, por menos sumandos que en la otra partición.

Lo explicamos con el desarrollo para 204, cuya factorización es 3*22*17, lo que asegura que es un número de Zumkeller. Sus particiones de igual suma son:

Total divisores: 1+2+3+4+6+12+17+34+51+68+102+204=504

Primera partición: 1+3+4+6+17+51+68+102=252

Segunda partición: 2+12+34+204=252

Los divisores han sido 1, 2, 3, 4, 6, 12, 17, 34, 51, 68, 102, 204

Si observamos la partición más corta, es claro que los sumandos compañeros de 204 no pueden superar la diferencia 252-204=48. Esto excluye a los divisores 51, 68, 102 y el mismo 204. Podríamos entonces cambiar los datos del problema:

  • ·       Los divisores podrían ser 1, 2, 3, 4, 6, 12, 17, 34
  • ·       La suma no tendría que ser 252, sino 48
  • ·       El valor real de TAU, que era de 12 divisores, se puede reducir a 8.

Hemos implementado una segunda hoja en nuestra herramienta http://www.hojamat.es/blog/zumkeller.xlsm duplicando el algoritmo, pero con estas modificaciones. El resultado, en el caso de 204 quedaría así:


Observamos que el valor de TAU ha quedado en 8, por haber eliminado cuatro divisores, 51, 68, 102 y 204 (tres de ellos han quedado como residuales en la parte baja del esquema). También cambia el valor de la suma, que ahora es de 48, y, si observamos las columnas que crean particiones, tan solo llegan hasta el número 34.

Con estos cambios, la velocidad de proceso aumenta, más o menos según la factorización. En el resultado obtenido, la partición que nos interesa es la de menor número de sumandos. En este caso tendríamos:

Total divisores: 1+2+3+4+6+12+17+34=48                         

Primera partición: 1+3+4+6+17=48                            

Segunda partición:  2+12+34=48                      

Si a la segunda partición le añadimos el 204 obtendremos la solución del primer algoritmo:

2+12+34+204=252

Uso de nuestra herramienta “Cartesius”

Esto que sigue es una curiosidad, de la que se puede prescindir. Lo que tiene de importante es que nos puede devolver más de una solución a las particiones de igual suma.

En una entrada nuestra de hace unos cinco años, explicábamos el uso de Cartesius para lograr particiones.

(https://hojaynumeros.blogspot.com/2017/06/cartesius-5-particiones-1.html)

Esta herramienta puedes descargarla desde

http://www.hojamat.es/sindecimales/combinatoria/herramientas/herrcomb.htm#cartesius

En la entrada referida se recomendaba este planteo para lograr una partición concreta, la del 7 en todos sus sumandos posibles:

XRANGO=7

XT=1..7

SUMA=7

CRECIENTE

 

Con algo de lentitud, crea todas las particiones del 7:

Siguiendo las reflexiones de los párrafos anteriores, si elegimos, por ejemplo, el número 60=2*2*3*5, su TAU es igual a 12, y podríamos rebajarla a 10, porque la mitad de sigma es, en este caso, 84. Si le restamos el número 60 nos queda 24, y podemos eliminar los divisores 30 Y 60, con lo que nos quedaría:

  • Divisores válidos: 1, 2, 3, 4, 5, 6, 10, 12, 15, 20
  • Nueva TAU: 10
  • Suma exigida: 24

El planteo adecuado en Cartesius sería

XRANGO=10

XT=1,2,3,4,5,6,10,12,15,20

SUMA=24

CRECIENTE

De esta forma, con bastante lentitud, obtenemos dos soluciones en lugar de una:


Las particiones de igual suma podrían ser

Primera partición: 1+2+3+5+6+10+12+15+30=84              

Segunda partición: 4+20+60=84   

Y también

Primera partición: 3+4+5+10+12+20+30=84             

Segunda partición: 1+2+ 6+15+60=84

Ya se dijo que es una curiosidad, porque la falta de velocidad del proceso no compensa su utilidad, salvo que busquemos números de Zumkeller con varias soluciones.

lunes, 21 de febrero de 2022

Números de Zumkeller(1) – Definición y búsqueda

Quienes visitamos a menudo la La Enciclopedia On-Line de las Secuencias de Números Enteros (OEIS) http://oeis.org conocemos muy bien a Reinhard Zumkeller, uno de los autores que más ha aportado conocimientos a esta página. En 2010 publicó los números que estudiaremos a continuación, y T. D. Noe, otro colaborador muy distinguido les asignó su nombre, y así son ya conocidos, como “los números de Zumkeller”.

A pesar de su reciente publicación, ya existen reseñadas muchas propiedades. Basta buscar en OEIS “Zumkeller numbers”. Aquí, en nuestra modestia, nos limitaremos a lo que sea fácil de implementar en hoja de cálculo. En este caso usaremos Excel.

La definición es muy sencilla de entender: Son números de Zumkeller aquellos en los que sus divisores se pueden repartir en dos conjuntos que tengan la misma suma. No han de contener divisores consecutivos en el orden natural,  ni tener el mismo número de elementos. Un ejemplo:

El número 25122 posee los siguientes divisores:

1+2+3+6+53+79+106+158+159+237+318+474+4187+8374+12561+25122 = 51840

Esta suma de 51840 se puede repartir entre dos particiones de los divisores, de forma que sus sumas sean iguales. Serían estas:

1+2+3+53+79+106+158+159+237+4187+8374+12561 = 25920

6+318+474+25122 = 25920

Le daremos a 25122 el título de número de Zumkeller. No es una condición difícil de cumplir, y la prueba es que estos números aparecen entre los naturales con frecuencias altas. Estos son los primeros:

6, 12, 20, 24, 28, 30, 40, 42, 48, 54, 56, 60, 66, 70, 78, 80, 84, 88, 90, 96, 102, 104, 108,…

(Puedes consultar la página dedicada a estos números en OEIS: http://oeis.org/A083207)

Búsqueda de números de Zumkeller

En la página citada se incluyen códigos en distintos lenguajes de programación para decidir si un número es de Zumkeller o no. Con ellos hemos sabido que 25122 era de ese tipo. Todos se basan en la idea de las particiones de un conjunto, y por la orientación de la página, no se incluyen las dos particiones de igual suma. Eso es lo que se va a estudiar en esta entrada.

Últimamente acudimos a funciones para organizar búsquedas, pero como esa operación ya está bien estudiada, con lenguajes más potentes que Excel, nos ha parecido conveniente regresar a los esquemas de cálculo con botones y macros, de los que está lleno este blog.

La idea que se usará para buscar las dos particiones se basa en que el número de subconjuntos de un conjunto de N elementos es 2N. Cada partición se puede caracterizar por un número binario de N dígitos, en el que 1 puede significar que ese elemento entra en el conjunto y 0 que no entra. De esa forma, buscar particiones equivale a recorrer, en binario, todos los números entre 1 y 2N-1. No consideramos el 0, que devolvería el conjunto vacío. Lo vemos aplicado al ejemplo anterior

Hemos implementado esta idea en la hoja de cálculo zumkeller.xlsm, alojada en nuestra web Hojamat.es

http://www.hojamat.es/blog/zumkeller.xlsm

Su funcionamiento sigue varios pasos:

1) Dado un número entero positivo en la celda correspondiente, la hoja calcula la suma de sus divisores, y si no es par o esa suma no sobrepasa el doble del número, lo rechaza, porque no se puede repartir en dos particiones.

2) Si SIGMA es par se buscan todos los divisores del número, y simultáneamente se van también sumando, para obtener SIGMA de nuevo y contando, para conocer TAU. Este último valor es muy importante, porque determinará en número de subconjuntos a buscar, que será 2TAU-1, según se explicó más arriba. Si descargas la hoja y pides Programador-Visual Basic podrás estudiar el código de las macros. Si no tienes esa barra Programador puedes activarla en las Opciones.

La macro ordenará los divisores en columna, y junto a ellos irá desplegando todos los números en binario desde 2TAU-1 hasta 1. Después multiplicará los divisores por estos unos y ceros para construir una partición. Lo puedes ver en esta imagen:


Se está analizando el número 42. Su SIGMA es par, por lo que se inicia el proceso. El valor de TAU es 8 (no aparece en la imagen)

En la primera columna observamos los divisores de 42, que son ocho. La segunda es auxiliar, y sirve para construir los dígitos binarios. Multiplicando esos dígitos por los divisores se obtiene la cuarta columna, los sumandos de cada partición.

La macro no se detiene hasta que encuentra el valor correcto de suma, que en este caso es 6+42=48. La imagen de arriba se ha podido capturar porque se ha llegado a la detención de la macro. En caso contrario, si no hay solución, se recorren todas las posibilidades sin detención previa.

En caso de llegar a una solución, se reflejarán en la parte derecha las dos particiones con igual suma:


Esta hoja presenta una rapidez aceptable para valores de TAU inferiores a 12 o 15. En el resto de valores deberemos usar la paciencia y dejar a Excel que trabaje solo.

Un número de Zumkeller, como este 42 del ejemplo, será un sumando en una de las particiones, luego la otra tendrá como suma un número igual o superior a él, pero eso significará que el número será perfecto o abundante, porque la suma de su divisores propios será igual o mayor que él. En el caso del 42, sus divisores propios suman 54.

Casos particulares

(1) Se ha demostrado que todos los primoriales (ver en este blog https://hojaynumeros.blogspot.com/2012/02/el-primorial.html), a partir del 6 son de Zumkeller. Vemos un ejemplo, el 210=2*3*5*7:

En estos números TAU es siempre una potencia de 2 (Ver en este blog https://hojaynumeros.blogspot.com/search?q=multiplicativas y siguientes) y sigma es par, como en este caso, que es (1+2)(1+3)(1+5)(1+7)=576

Esto es consecuencia de lo que sigue.

(2) Los números del tipo 3*2k son de Zumkeller. El mismo autor lo explica, y lo adaptamos aquí. Todo se basa en que las funciones SIGMA Y TAU son multiplicativas (ver en este blog la entrada

https://hojaynumeros.blogspot.com/2011/10/funciones-multiplicativas-1.html

para factores coprimos. En este caso, SIGMA(3*2k)=SIGMA(3)*SIGMA(2k) y desarrollando:

Sigma=(1+3)(1+2+4+8+16+…2k)=4*(2k+1-1)

Por ejemplo, en el caso de 96=3*25 será SIGMA(96)=4*(26-1)=4*63=252

La mitad de esa expresión general será 2*(2k+1-1), que coincide con la suma de divisores 3*2k+3*2k-2+…y esa será una de las particiones pedidas. En el caso de 96 equivale a

96+24+6=3*25+3*23+3*21=3*(2*(43-1)(4-1))=2*(26-1)=126

Así que siempre tendremos una partición formada por una serie de divisores con potencias de 2 alternas. Lo vemos con nuestra hoja:

Total divisores: 1+2+3+4+6+8+12+16+24+32+48+96=252

Primera partición: 1+2+3+4+8+12+16+32+48=126

Segunda partición: 6+24+96=126

(3) Si a estos números del tipo 3*2k los multiplico por un número coprimo con 2 y 3, el resultado sigue siendo del tipo Zumkeller.

Es evidente que si multiplico por un coprimo, todas las sumas quedarán multiplicadas y, según R. Gerbicz (ver http://oeis.org/A179527), el producto seguirá siendo de Zumkeller.

Eso ocurre, por ejemplo en 3*11*4=132

Total divisores: 1+2+3+4+6+11+12+22+33+44+66+132=336    

Primera partición: 1+2+4+6+11+12+22+44+66=168

Segunda partición: 3+33+132=168         

Observamos, como era de esperar, que SIGMA contiene todos los divisores de 12 y otros que son sus productos por 11.               

Esto demuestra la primera afirmación de que los primoriales son todos de Zumkeller.

(4) Los números admirables, de reciente publicación en este blog (ver entrada anterior a esta) también son de Zumkeller, porque ellos coinciden con la suma de sus divisores propios cambiando a un divisor de signo, o, lo que es igual restando a SIGMA dos veces este divisor. En este caso, basta sumar ese divisor para obtener las dos particiones. Lo vemos con un ejemplo:

812 es admirable y el divisor que cambia de signo es el 28:

812 =406+203+116+58+29-28+14+7+4+2+1

Si ahora sumamos 812+28=840, esa será la partición “corta”. Lo comprobamos con nuestro esquema:

Total divisores: 1+2+4+7+14+28+29+58+116+203+406+812=1680   

Primera partición: 1+2+4+7+14+29+58+116+203+406=840                 

Segunda partición: 28+812=840             

Estamos llegando al límite de extensión que le doy a mis entradas, por lo que dejo materia para la siguiente.