martes, 19 de diciembre de 2017

Suma y diferencia de números del mismo tipo (2)

En la anterior entrada estudiamos los números que son suma y diferencia de otros del mismo tipo, en concreto, triangulares y cuadrados. Estudiaremos en esta los primos y oblongos.

Con primos

Suma de dos primos

Si el número N es par mayor que 2, como sólo estudiaremos números no muy grandes, se cumplirá en él la conjetura de Goldbach y será suma de dos primos. Si es impar, la única solución es que N-2 sea primo. Esos son los dos casos en los que N es suma de dos primos. Podemos resumirlo en una función:

Public Function essumaprimos(n)
If n / 2 = n \ 2 And n > 2 Or esprimo(n - 2) Then essumaprimos = True Else essumaprimos = False
End Function

Con ella obtendríamos el listado contenido en http://oeis.org/A014091

4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 24, 25, 26, 28, 30, 31, 32, 33, 34, 36, 38, 39, 40, 42, 43, 44, 45, 46, 48, 49, 50, 52, 54, 55, 56, 58, 60, 61, 62, 63, 64, 66, 68, 69, 70, 72, 73, 74, 75, 76, 78, 80, 81, 82, 84, 85, 86, 88, 90,…

Diferencia de primos

Se ha conjeturado que todo número par es diferencia entre dos primos, y se cumple para números no muy grandes. Si el número es impar, deberá ser N+2 primo. Así que eliminaremos del listado anterior aquellos impares como el 7 tales que al sumarles dos unidades se obtenga un compuesto.

Quedaría así:

4, 5, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 22, 24, 26, 28, 30, 32, 34, 36, 38, 39, 40, 42, 44, 45, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 69, 70, 72, 74, 76,…

Los únicos impares N del listado son aquellos en los que N-2 y N+2 son ambos primos, como el 69, para el que 67 y 71 son ambos primos.

Observamos que, al final, no supone una gran novedad el hecho de ser suma y también diferencia de dos números del mismo tipo en los casos triangular, cuadrado o primo, que son los más populares. Los demás pueden tener dificultades con la cota del minuendo.

Suma de oblongos 

Recordemos que son oblongos los números doble de un triangular, o que se generan con la expresión N(N+1)

Para desechar casos triviales eliminaremos el cero como oblongo, aunque cumple la definición de ser del tipo n(n+1), ya que 0=0(0+1)

Los primeros números que son suma de dos oblongos mayores que cero son:



En forma de listado:

4, 8, 12, 14, 18, 22, 24, 26, 32, 36, 40, 42, 44, 48, 50, 54, 58, 60, 62, 68, 72, 74, 76, 78, 84, 86, 92, 96, 98, 102, 110, 112, 114, 116, 120, 122, 128, 130, 132, 134, 138, 140, 144, 146, 152, 158, 162, 166, 168, 174, 176, 180, 182, 184, 186, 188, 194, 198, 200, 202, 204, 212, 216, 220, 222, 224, 228, 230, 238, 240,…

Para obtenerlos basta pensar en que un oblongo es el doble de un triangular, luego serán oblongos los números cuya mitad sea triangular. En esa idea se basa la siguiente función:

Public Function sumaoblongos$(n)
Dim x, i
Dim resul$

x = 2: i = 4: resul = "NO"
While x <= n / 2 And resul = "NO"
If estriangular((n - x) / 2) Then
resul = Str$(x) + ", " + Str$(n - x)
End If
x = x + i
i = i + 2
Wend
sumaoblongos = resul
End Function

En ella la x y la i crecen como en los cuadrados, salvo que los oblongos comienzan con el 2 y crecen de dos en dos y los cuadrados comienzan en 1. Así, a los oblongos los genera la sucesión de pares y a los cuadrados la de impares.

Con PARI podemos usar este código:

for(t=1, 400, i=2; j=2; e=0; while(2*i<=t&e==0, if(issquare(4*(t-i)+1), e=1; print1(t, ", ")); j+=2; i+=j))

Es interesante considerar el caso en el que N también sea oblongo. Basta elegir en el listado anterior aquellos términos que sean oblongos.

12, 42, 72, 110, 132, 182, 240, 272, 342, 420, 462, 552, 702, 756, 812, 992, 1122, 1332, 1406, 1482, 1640, 1722, 1892, 1980, 2070, 2162, 2352, 2450, 2652, 2756, 2862, 2970, 3080, 3192, 3306, 3422, 3540, 3782, 3906, 4032, 4160, 4422, 4556, 4692, 5112, 5402, 5550, 5700, 5852, 6006, 6162, 6480, 6642, 6972, 7482, 7832, 8010, 8372, 8556, 8742, 8930, 9120, 9312, 9702,


Código PARI 

Puedes obtener el listado con este código, en el que generamos oblongos con k*(k+1) y después el primer sumando oblongo tal como hicimos en sumaoblongos. La prueba para el segundo sumando es que 4*(t-i)+1 sea cuadrado.

for(k=1, 100, t=k*(k+1); i=2; j=2; e=0; while(2*i<=t&e==0, if(issquare(4*(t-i)+1), e=1; print1(t, ", ")); j+=2; i+=j))


Número de sumas de oblongos distintas

Terminamos con unas curiosidades. Podemos evaluar en cuántas sumas distintas de oblongos se puede descomponer un número. Usamos la función


Public Function numsumaoblongos(n)
Dim x, i, s

x = 2: i = 4: s = 0
While x <= n / 2
If estriangular((n - x) / 2) Then s = s + 1
x = x + i
i = i + 2
Wend
numsumaoblongos = s
End Function

Es similar a sumaoblongos, pero cuenta sumas en lugar de presentarlas.

Estos son los que admiten  dos o más sumas:



Estos otros cuatro o más



Comprobamos el 2762 con nuestra hoja Cartesius, descargable desde
http://www.hojamat.es/sindecimales/combinatoria/herramientas/herrcomb.htm#cartesius

Planteamos




Viene a expresar que 2762 se descompone en dos sumandos del tipo n(n+1), ordenados en orden creciente para evitar repeticiones. Resultan seis, como era de esperar:



Diferencia de oblongos

p(p+1)-q(q+1)=N significa que p^2+p-q^2-q=(p-q)(p+q+1)=N
Es fácil ver que este producto es par en todos los casos, y es lógico, por ser diferencia de oblongos. Por tanto, todos los números pares 2k serán diferencia de dos oblongos, que pueden ser (k+1)k y k(k-1), ya que su diferencia sería 2k. Así:
16=9*8-8*7=72-56

Por tanto, también en este caso el tema de la diferencia es trivial.

domingo, 10 de diciembre de 2017

Suma y diferencia de números del mismo tipo (1)


Con triangulares

Hace unos meses publiqué en Twitter esta propiedad del número de fecha 28617. Consistía en que ese número era suma y también diferencia entre dos triangulares.

28617=161*162/2+176*177/2
28617=4772*4773/2-4766*4767/2

Podríamos buscar otros números N que presentaran la misma propiedad. Para ver que un número es suma de triangulares basta un bucle de búsqueda, recordando que los triangulares se generan sumando 1, 2, 3,… al precedente: 1=0+1, 3=1+2, 6=3+3, 10=6+4. Después basta restar N con el triangular dado, y si es también triangular, ya lo hemos encontrado: N sería suma de dos triangulares.

Lo podemos organizar en el Basic de las hojas de cálculo. Definimos una función tipo texto que devuelva “NO” si el número no  es suma de triangulares, o bien los dos sumandos en el caso de que existan. Podría ser esta:

Public Function sumatriang$(n)
Dim x, i
Dim resul$

x = 1: i = 2: resul = "NO" ‘Inicia i, x para que engendren triangulares
While x <= n / 2 And resul = "NO" ‘Busca hasta la mitad de N
If estriangular(n - x) Then ‘Si la diferencia es triangular, lo tenemos
resul = Str$(x) + ", " + Str$(n - x) ‘Se construye el resultado
End If
x = x + i ‘Estas líneas son importantes. Engendran los distintos triangulares
i = i + 1 ‘Así x será siempre triangular
Wend
sumatriang = resul
End Function

La función estriangular tiene este código, que se basa en que ocho triangulares iguales más una unidad equivale a un cuadrado:

Function estriangular(n) As Boolean
Dim a
If escuad(8 * n + 1) Then estriangular = True Else estriangular = False
End Function

Si organizamos un bucle de búsqueda con la función sumatriang obtenemos los números que son suma de dos triangulares:


Están contenidos en http://oeis.org/A051533

Un caso interesante es aquel en el que el número dado es también triangular. Los tienes en https://oeis.org/A089982:

6, 21, 36, 55, 66, 91, 120, 136, 171, 210, 231, 276, 351, 378, 406, 496, 561, 666, 703, 741, 820, 861, 946, 990, 1035, 1081, 1176, 1225, 1326, 1378, 1431, 1485, 1540, 1596, 1653,…

Puedes conseguirlos añadiendo la condición de que sea triangular n en la función sumatriang.

Diferencia de triangulares

Esta cuestión es más complicada para organizar un algoritmo, pues no sabemos hasta dónde llegar en la búsqueda del minuendo triangular. Es preferible acudir a esta consideración:

Sean los triangulares p(p+1)/2 y q(q+1)/2. Si su diferencia es N, será p(p+1)/2-q(q+1)/2=N; p^2+p-q^2-q=2N; (p-q)(1+p+q)=2N, luego p-q divide a 2N. Si p-q=1, bastará con que 1+p+q=2N, pero esto se cumple siempre, ya que p y q tienen distinta paridad, luego 1+p+q puede ser par.

Si p=q+1, la cuestión se reduce a (q+1)^2+q+1-q^2-q=2q+1+1=2N; q+1=N y q=N-1.

Así tendremos que N(N+1)/2-(N-1)N/2=N

Todo número natural es diferencia de dos triangulares

La segunda parte de la cuestión ha resultado banal, luego en lugar de buscar suma y diferencia de triangulares, habría bastado con la primera parte, la de la suma, que ya está estudiada.

Pasamos a otro tipo.

Con cuadrados

La cuestión de la descomposición de un número en suma de cuadrados ya está resuelta desde Fermat y Gauss. Lo estudiamos en

http://hojaynumeros.blogspot.com.es/2010/10/en-cuantas-sumas-de-cuadrados-2-de-5.html

El criterio más práctico es: sólo se pueden descomponer en cuadrados los números en los que los factores primos del tipo 4n+3 figuren en su descomposición con exponente par.

No viene mal obtener un listado de esos números. Se puede acudir a la descomposición en factores primos o reproducir para cuadrados la función sumatriang. Lo haremos de esta segunda forma. Basta adaptar esa función para cuadrados. El cambio mayor consiste en que la variable i no crece según los números naturales, sino mediante los impares. Quedaría así la nueva función:

Public Function sumacuadrados$(n)
Dim x, i
Dim resul$

x = 1: i = 3: resul = "NO"
While x <= n / 2 And resul = "NO"
If escuad(n - x) Then
resul = Str$(x) + ", " + Str$(n - x)
End If
x = x + i
i = i + 2
Wend
sumacuadrados = resul
End Function

Con ella obtenemos un listado de los números que se descomponen en dos cuadrados, junto con sus factores primos:


Observamos que los factores primos son del tipo 4k+1 o bien, como en el caso del 18 o el 45, del tipo 4k+3 con exponente par.

Un listado más completo lo puedes estudiar en http://oeis.org/A000404:
2, 5, 8, 10, 13, 17, 18, 20, 25, 26, 29, 32, 34, 37, 40, 41, 45, 50, 52, 53, 58, 61, 65, 68, 72, 73, 74, 80, 82, 85, 89, 90, 97, 98, 100, 101, 104, 106, 109, 113, 116, 117, 122, 125, 128, 130, 136, 137, 145, 146, 148, 149, 153, 157, 160, 162, 164, 169,…

Esto resuelve la primera parte de la cuestión. Pasamos a la diferencia:

Diferencia de cuadrados

Si N=p^2-q^2, tendremos N=(p+q)(p-q), luego p+q y p-q son divisores de N. Si p-q=1, p+q=N, por lo que podemos afirmar (y es bien conocido) que N es impar e igual a la diferencia (K+1)^2-K^2, siendo K=(N-1)/2, o lo que es lo mismo, N=((N+1)/2)2-((N-1)/2)2. Así, por ejemplo, 13=72-62

Si N es par, p-q puede valer 2, con lo que p=q+2 y N=(2q+2)*2, lo que implica que N es múltiplo de 4. También es conocido que los números múltiplos de 2 pero no de 4 no equivalen a una diferencia de cuadrados.

Un estudio completo de la situación  lo tienes en

http://hojaynumeros.blogspot.com.es/2017/01/numero-de-descomposiciones-en.html

Así que en el listado anterior habría que suprimir todos los pares no múltiplos de 4. Con esta operación obtenemos el siguiente listado definitivo de los números que son a la vez suma y diferencia de cuadrados:

5, 8, 13, 17, 20, 25, 29, 32, 37, 40, 41, 45, 52, 53, 61, 65, 68, 72, 73, 80, 85, 89, 97, 100, 101, 104, 109, 113, 116, 117, 125, 128, 136, 137, 145, 148, 149, 153, 157, 160, 164, 169, 173, 180, 181, 185, 193, 197, 200, 205, 208, 212, 221, 225, 229, 232, 233,…

http://oeis.org/A097268

Podríamos completar el algoritmo de la función sumacuadrados, pero es preferible el estudio teórico que hemos desarrollado. Lo dejamos como ejercicio.

jueves, 30 de noviembre de 2017

Números piramidales de cuatro dimensiones


Si has seguido las entradas anteriores sobre números piramidales (escribe “piramidales” en la casilla de búsqueda) sabrás que estos números se generan mediante sumas parciales en una sucesión de dimensión inferior.



Así, los tetraedros se generan sumando números triangulares. Estos, a su vez, mediante números lineales. Las pirámides cuadradas se obtienen sumando cuadrados, y los de tipo poligonal sumando los de dos dimensiones del mismo número de lados.

Si sumamos números piramidales, obtendremos piramidales de cuatro dimensiones. Por ejemplo, los piramidales cuadrados son 1, 5, 14, 30, 55, 91, 140, 204,...


Formamos con ellos sumas parciales: 1, 1+5, 1+5+14, 1+5+14+30,… y obtenemos:

1, 6, 20, 50, 105, 196, 336, 540,…

Estos será, pues,  los piramidales cuadrados de cuatro dimensiones.

En esta entrada y las siguientes del mismo tema iremos recorriendo los piramidales de cuatro dimensiones según su número de lados. En todos ellos comenzaremos con sumas parciales en piramidales de tres dimensiones, obtendremos su fórmula polinomial y terminaremos con curiosidades y equivalencias. Comenzamos con triangulares:

Tetraedros de cuatro dimensiones

Estudiamos los tetraedros de tres dimensiones en nuestra entrada

En ella vimos que la sucesión de los mismos comienza con 

1, 4, 10, 20, 35, 56, 84, 120, 165, 220,…

Si procedemos a formar sumas parciales, obtendremos los tetraedros de cuatro dimensiones:

1, 1+4, 1+4+10, 1+4+10+20, 1+4+10+20+35,…. Es decir, 1, 5, 15, 35, 70, 126, 210,…

Los primeros términos de la sucesión de números de este tipo son:

1, 5, 15, 35, 70, 126, 210, 330, 495, 715, 1001, 1365, 1820, 2380, 3060, 3876, 4845, 5985, 7315, 8855,…, y están recogidos en http://oeis.org/A000332 con otra definición, coincidente, como veremos, salvo algunos ceros.

Los nombraremos como PIR3_4(n), donde 3 es el número de lados, 4 la dimensión y n el número de orden. Así 210=PIR3_4(7).

Obtención de la fórmula polinomial

Ya estudiamos este procedimiento en una entrada anterior


Consiste en usar la fórmula de interpolación de Newton aplicada a los primeros números. Remitimos a la entrada enlazada para seguir el procedimiento. En primer lugar escribimos los primeros términos 1, 5, 15, 35, 70,… y obtenemos sus diferencias sucesivas:



Observamos que son nulas las diferencias de orden 5, luego el polinomio que buscamos es de cuarto grado. Sus coeficientes los leemos más abajo:


Por tanto, el polinomio buscado será

1+4(x-1)+3(x-1)(x-2)+2(x-1)(x-2)(x-3)/3+(x-1)(x-2)(x-3)(x-4)/24

Podemos acudir a wxMaxima para simplificar:



O bien con la web https://www.wolframalpha.com, obtenemos el mismo polinomio:



Con el comando factor de wxMaxima factorizamos:

Esta es la fórmula más práctica para obtener los tetraedros de cuatro dimensiones, que, es fácil verlo, coincide con:


En toda esta serie nos aparecen números combinatorios, y es porque se pueden localizar los piramidales en el triángulo de Pascal



En la imagen están destacados los triangulares, los tetraedros de tres dimensiones y los de cuatro, que son suma de los anteriores.

Interpretaciones

Los tetraedros de cuatro dimensiones coinciden con las intersecciones de las diagonales de un polígono convexo, siempre que no concurran más de dos diagonales en el mismo punto. Por eso debemos elegir polígonos no regulares, como el de la figura



En él está representado el número 35, como las intersecciones (en color verde) en un heptágono. El 35 es el cuarto tetraedro de cuatro dimensiones, y le corresponde el polígono de tres lados más. Esto es por el n+3 que figura en la fórmula general.

He encontrado una explicación muy sencilla debida a Ignacio Larrosa @ilarrosac: Si el polígono es irregular, cada cuatro vértices formarán un cuadrilátero convexo distinto, y sus diagonales producen un único punto de intersección. Por tanto, el número de ellos coincidirá con el de combinaciones de n+3 lados tomados de 4 en 4. Muy elegante.

También se debe a Ignacio Larrosa la siguiente interpretación:

El número piramidal triangular de cuatro dimensiones de orden n coincide con todos los triángulos equiláteros que se pueden dibujar uniendo tres puntos de una matriz  que rellena otro triángulo equilátero de lado n+1.

En la figura puedes ver uno de esos triángulos.



La idea de Ignacio Larrosa consiste en que cada triángulo tiene sus vértices en los lados de otro mayor que sigue la orientación de la matriz triangular, y que basta contar estos últimos y también todos los triángulos de cualquier orientación que se inscriben en ellos.



En la imagen hemos destacado en azul el equilátero orientado que contiene al elegido en primer lugar. Nos dedicamos a contar:

Número de triángulos orientados de lado k

Es un problema muy estudiado. En la imagen, el número de triángulos similares al dibujado es 1+2=3. Si tuviera una celda menos de lado su número sería 1+2+3=6, y así hasta los de lado 1, cuyo número sería 1+2+3+4+5+6=21, todos números triangulares. En general, el número de triángulos orientados de lado k en una matriz de lado n sería T(n-k+1), siendo T el triangular de ese orden.

Número de triángulos contenidos en un orientado

Basta deslizar el primer vértice (por ejemplo el que cae a la izquierda) a lo largo de su lado, y los demás se situarán en un punto fijado sin ambigüedad. En el ejemplo se podrían inscribir cuatro.



Es fácil ver que, en general, se pueden inscribir k-1 triángulos.

Con estos dos datos se pueden contar todos los equiláteros posibles mediante una suma de productos. Para n=6, caso del ejemplo sería:

S=1*5+3*4+6*3+10*2+15*1=5+12+18+20+15=70, que es el piramidal de orden 5.

Para un estudio general puedes consultar

Recurrencia

Es fácil ver, según la fórmula general, que

PIR3_4(N)=PIR3_4(N-1)*(N+3)/(N-1)

En efecto:


Luego basta multiplicar por n+3 y dividir entre n-1 para pasar de uno a otro.
Por ejemplo: 70*9/5=14*9=126



lunes, 20 de noviembre de 2017

Sumandos en progresión aritmética (2)


En la anterior entrada de esta serie estudiamos los números que se pueden expresar como suma de tres números triangulares en progresión aritmética. En esta segunda buscaremos la misma propiedad con otros tipos de números.

Con cuadrados

El mismo planteamiento que con triangulares se puede seguir con cuadrados. Deseamos saber qué números son suma de cuadrados en progresión aritmética.

El mismo planteamiento inicial, cambiando la función estriangular por la de escuad nos dará los primeros términos, que resultan ser los siguientes, hasta 1000:

75, 300, 507, 675, 867, 1200, 1875, 2028, 2523, 2700, 3468, 3675, 4107, 4563, 4800, 5043, 6075, 7500, 7803, 8112, 8427, 9075,…

Por ejemplo, 675 es suma de tres cuadrados 675=3^2+15^2+21^2=9+225+441, con 441-225=225-9=216, por lo que están en progresión aritmética.

Es evidente que los números de esta sucesión son triple de cuadrados, por lo que constituyen una subsucesión de http://oeis.org/A033428

Como ocurría con los triangulares, si recordamos que los cuadrados se forman sumando impares, 1+3+5+7+9+…podíamos intentar ir sumando al cuadrado n^2 la diferencia 2n-1, que será simétrica de (n-1)^2, 2n-3, que llegará hasta (n-2)^2. Y así sucesivamente hasta llegar a diferencia 1. Como el número obtenido restando será cuadrado con seguridad, bastará analizar su simétrico en el cálculo. También, al igual que con los triangulares, se puede ir generando cuadrados simultáneamente. La rutina listasumprog de arriba quedaría ahora así:

Sub listasumprog()
Dim i, k, t, v, m
Dim e As Boolean

t = 4: k = 3 ‘primer cuadrado y primera diferencia 2n-1
While t < 5000
i = k: e = False: v = t + i ‘el valor de v es simétrico de un cuadrado, y ha de ser también cuadrado.
While i > 1 And Not e
If escuad(v) Then m = 3 * t: e = True: MsgBox (m) ‘si v es cuadrado, hay progresión aritmética
i = i – 2 ‘siguiente diferencia impar
v = v + i ‘incrementamos v
Wend
k = k + 2 ‘Estas dos líneas engendran los cuadrados centrales
t = t + k
Wend
End Sub

El resultado es:

75, 300, 507, 675, 867, 1200, 1875, 2028, 2523, 2700, 3468, 3675, 4107, 4563, 4800, 5043, 6075, 7500, 7803, 8112, 8427, 9075, 10092, 10800, 11163, 12675, 13872, 14700, 15987, 16428, 16875, 18252, 19200, 20172, 21675, 22707,

También esta sucesión estaba inédita, y la hemos publicado en https://oeis.org/A292313

Puedes reproducirlos con este código en lenguaje PARI:

t=4;k=3;while(t<=3000,i=k;e=0;v=t+i;while(i>1&&e==0,if(issquare(v),m=3*t;e=1;print1(m,", "));i+=-2;v+=i);k+=2;t+=k)

De igual forma se podría construir una función para detectar si un número es suma o no de cuadrados en progresión. Por no alargar lo dejamos como tarea de los lectores. Basta tomar la función essumaprog(n) de la entrada anterior sobre triangulares y sustituir estriangular por escuad.

Diferencias h y k

Si llamamos k a la diferencia del cuadrado central con el mayor de la terna y h a su diferencia con el menor (h será mayor que k), el hecho de ser progresión aritmética nos exige:

m^2-(m-h)^2=(m+k)^2-m^2

Simplificando:

2mh-h^2=2mk+k^2

Despejamos m:

m=(k^2+h^2)/(2(h-k)), con h>k

Por ejemplo, para el caso de 3m=75 tendríamos:

75=3*25; 1+25+49=75; 5=(4^2+2^2)/2/2=20/4=5

h y k deben ser ambos pares. Lo razonamos: m+k y m-h han de tener la misma paridad, pues su suma es 2m. Por tanto, h y k serán ambos pares o  ambos impares, lo que lleva a que h-k será par y contendrá el factor 2. Esto obliga a que h y k sean pares, pues en el denominador del cociente (k^2+h^2)/(2(h-k)) tendríamos dos factores 2, por lo que k^2+h^2 ha de ser múltiplo de 4, y si fueran ambos impares, sería múltiplo de 2, pero no de 4. Así que k y h son pares. Lo puedes comprobar con hoja de cálculo.

m es un número pitagórico, es decir m^2=u^2+v^2 para ciertos u,v

Como m-h y m+k tienen la misma paridad, los podemos interpretar como una suma y una diferencia, v-u y v+u, con lo que quedaría (v-u)^2 y (v+u)^2, siendo v=(m+k+m-h)/2 y u=(m+k-m+h)/2, o bien v=m+(k-h)/2 y u=(k+h)/2

Su promedio ha de ser m^2, luego:

((v-u)^2+(v+u)^2)/2=(2v^2+2u^2)/2=v^2+u^2=m^2

Hemos comprobado que m^2 es suma de dos cuadrados v^2+u^2.

Lo bueno de estas equivalencias es que son reversibles, por lo que todo número que sea suma de cuadrados distintos puede dar lugar a una progresión aritmética de cuadrados.

Lo vemos:

Propiedad directa: 1200 es suma de tres cuadrados en progresión aritmética:4^2+20^2+28^2, con lo que h=20-4=16 y k=28-20=8. Si definimos u=(28-4)/2=12 y v=(28+4)/2=16 tendremos que 16^2+12^2=256+144=400=1200/3=m^2, luego m es pitagórico.

Propiedad recíproca: Tomamos un número pitagórico, por ejemplo 29^2=20^2+21^2. En él u=20 v=21. Se tiene que u+v=41 y v-u=1, luego los cuadrados de 1, 29 y 41 debería formar progresión aritmética: 29^2-1^2=841-1=840 y 41^2-29^2=1681-841=840, luego coinciden las diferencias y es progresión aritmética.

Otros casos

Completamos la entrada con un breve repaso a otros casos.

Números oblongos

Está también inédita la sucesión de números que son suma de tres oblongos en progresión aritmética. Puedes buscarlos si sustituyes función estriangular por esoblongo, en la que se sustituye 8*n+1 por 4*n+1, o en el código PARI 8*v+1 por 4*v+1. Así:

t=2;k=2;while(t<=10^4,i=k;e=0;v=t+i;while(i>2&&e==0,if(issquare(4*v+1),m=3*t;e=1;print1(m,", "));i+=-2;v+=i);k+=2;t+=k)

Obtenemos la sucesión

126, 168, 216, 468, 918, 1026, 1140, 1260, 1518, 1950, 2106, 2268, 2790, 3168, 3996, 4218, 5418, 5676, 5940, 6210, 6768, 7056, 7650, 8268, 8910, 9240, 9576, 9918, 10266, 10620, 11346, 11718, 13668, 14076, 15336, 15768, 16650, 17556, 126, 168, 216, 468, 918, 1026, 1140, 1260, 1518, 1950, 2106,…

La hemos publicado en https://oeis.org/A292314

Es subsecuencia de http://oeis.org/A028896

Sus terceras partes se caracterizan por ser números oblongos equidistantes de otros dos oblongos. Los primeros son:

42, 56, 72, 156, 306, 342, 380, 420, 506, 650, 702, 756, 930, 1056, 1332, 1406, 1806, 1892,…

Vamos, por ejemplo el 342=18*19. Basta ir recorriendo oblongos menores y mayores que él para encontrar 132=11*12 y 552=23*24 tales que 552-342=210=342-132, con lo que formas progresión aritmética.

También estaban inéditos y los hemos publicado en https://oeis.org/A292316

Con semiprimos

Los primeros números que son suma de tres semiprimos en progresión aritmética son:

27, 30, 42, 45, 63, 66, 75, 78, 99, 102, 105, 114, 117, 138, 147, 153, 165, 171, 174, 186, 195, 207, …

Y sus terceras partes:

9, 10, 14, 15, 21, 22, 25, 26, 33, 34, 35, 38, 39, 46, 49, 51, 55, 57, 58

Lo curioso de estas sucesiones es que parecen estar en ellas todos los semiprimos mayores que 8. Esto se basa en un resultado de Meng. Probamos con un semiprimo cualquiera, como 721=7*103. Como en anteriores ocasiones, buscamos semiprimos cercanos, y encontramos 697=17*41 y 745=5*149, dos semiprimos tales que 745-721=721-697=24.

Con términos de la sucesión de Fibonacci

Ocurre como en el caso anterior, que todos los términos son media aritmética de otros dos, en concreto F(n)=(F(n-2)+F(n+1))/2, ya que F(n-2)+F(n+1)=F(n-2)+F(n-1)+F(n)=2F(n).

Esto convierte nuestra cuestión en algo trivial: todos los números de la forma 3*F(n) la cumplen.

jueves, 9 de noviembre de 2017

Sumandos en progresión aritmética (1)


En el transcurso de mis publicaciones en Twitter apenas he encontrado sumandos del mismo tipo en progresión aritmética que engendren números determinados (en mi caso, números de fechas en @Connumeros). Esto me ha animado a investigar el tema en el caso de tres sumandos.

Si un número coincide con una suma en progresión aritmética, el total de los tres sumandos ha de ser el triple del central, lo que puede facilitar la búsqueda, estudiando sólo aquellos números que sean triple de uno del tipo dado. Así, el 63, que es suma de tres triangulares en progresión aritmética, es el triple del triangular 21, y cumple 63=6+21+36, los tres triangulares con diferencia mutua 15.

Con números primos

Navegando por OEIS (http://oeis.org/) encontré el caso de números primos. Comenzaremos, pues, por este. Estos son los primeros con la propiedad dada:
15, 21, 33, 39, 51, 57, 69, 87, 93, 111, 123, 129, 141, 159, 177, 183, 201, 213, 219, 237, 249, 267, 291, 303,…

Están calificados como semiprimos, lo que es normal, por el razonamiento de los párrafos anteriores, ya que todos se descompondrán en el primo 3 multiplicado por otro primo. Así, 87=3*29, y es suma de 17+29+41, con 41-29=29-17=12
Si se dispone de la función “esprimo”, que determina si un número es primo o no, no es difícil encontrar estos números. La puedes copiar, por ejemplo, desde http://hojaynumeros.blogspot.com.es/2009/03/primos-reversibles-primo-omirp.html

Hemos creado una función que determina si un número es suma o no de tres primos en progresión aritmética. Es esta:

Public Function essumaprog(n)
Dim es As Boolean
Dim a, k

es = False
If n / 3 = n \ 3 Then  ‘Sólo sigue si es múltiplo de 3
a = n / 3
If esprimo(a) Then ‘Exige que el cociente n/3 sea primo
k=1
While k<a and not es ‘Va restando y sumando unidades hasta descubrir dos sumandos primos
If esprimo(a - k) And esprimo(a + k) Then es = True ‘Encontrados dos primos, luego vale
k=k+1
wend
End If
End If
essumaprog = es
End Function

Con ella es fácil buscar los números suma de primos en progresión aritmética:



Se ha conjeturado que todos los números triple de primos, a partir del 15, pertenecen a esta lista. Esta conjetura está relacionada con la de Goldbach. Con nuestra función podemos comprobar que todo semiprimo del tipo 3*p  con p>3 es suma de tres primos en progresión aritmética. Elegimos, por ejemplo 3*211=633. Le aplicamos la función y nos resulta VERDADERO, ya que 633=199+211+223, los tres primos y con 211-199=223-211=12

Para una mayor velocidad de cálculo se puede programar la búsqueda en el lenguaje PARI. Si lo conoces, puedes experimentar con este código:

for(n=1,200,if(n/3==n\3,a=n/3;if(isprime(a),e=0;k=1;while(k<a&&e==0,if(isprime(a-k)&&isprime(a+k),e=1;print1(n,", "));k+=1))))

En la imagen tienes el listado


Con triangulares

El caso de una suma de triangulares (tipo n(n+1)/2) en progresión aritmética se presta a alguna variante que nos será útil en otros cálculos próximos.
Para saber si un número es triangular, basta multiplicarlo por 8 y añadir una unidad. Si el resultado es cuadrado, el número es triangular.

La búsqueda de triangulares en progresión aritmética se puede abordar con dos funciones:

Public Function escuad(n) As Boolean
'Determina si n es un cuadrado
If n < 0 Then
escuad = False
Else
If n = Int(Sqr(n)) ^ 2 Then escuad = True Else escuad = False
End If
End Function

Function estriangular(n) As Boolean
Dim a
If escuad(8 * n + 1) Then estriangular = True Else estriangular = False
End Function

Con estas dos funciones, para saber si un número es suma de triangulares en progresión, lo dividimos entre 3, y si el resultado es triangular, seguimos el algoritmo. En ese caso vamos sumando y restando el mismo número, y si suma y resta son ambos triangulares, hemos descubierto la progresión aritmética. Este proceso se puede concretar en la siguiente función:


Public Function essumaprog(n) 'Con triangulares
Dim es As Boolean
Dim a, k

es = False
If n / 3 = n \ 3 Then ‘Se verifica que es múltiplo de 3
a = n / 3
If estriangular(a) Then ‘Si el cociente es triangular, se sigue
For k = 1 To a – 1 ‘Se suma y resta para buscar un par de triangulares
If estriangular(a - k) And estriangular(a + k) Then es = True ‘Si se encuentra, devuelve TRUE
Next k
End If
End If
essumaprog = es ‘Devuelve verdadero o falso
End Function

Con esta función se puede construir un bucle de búsqueda, que nos dará los primeros números con esa propiedad:


Podemos acudir a un planteamiento más rápido. Sabemos que los triangulares se forman sumando 1+2+3+4+…+n. Si a un número triangular de orden n le restamos n, la diferencia será también con seguridad triangular, con lo que sólo tenemos que comprobar que el número dado sumado con n también es triangular. Si no lo es, restamos ahora n-1 y volvemos a intentarlo, y así hasta llegar al 1. Por otra parte, en este proceso podemos ir generando los triangulares mediante 1+2+3+4+…, lo que acelera el cálculo. Quedaría así:

Sub listasumprog()
Dim i, k, t, v, m
Dim e As Boolean

t = 3 ‘Primer triangular
k = 2 ‘Primera diferencia
While t < 600
i = k ‘Recorrerá las diferencias de k hasta 1
e = False ‘Variable que recoge si hay solución o no
v = t + i ‘Sumamos la primera diferencia
While i > 1 And Not e
If estriangular(v) Then m = 3 * t: e = True: MsgBox (m) ‘Si es triangular, hemos terminado
i = i – 1 ‘Siguiente diferencia
v = v + i
Wend
k = k + 1 ‘Estas dos líneas generan nuevos triangulares
t = t + k
Wend
End Sub

Los primeros encontrados con este algoritmo son:

9, 63, 84, 108, 234, 315, 459, 513, 570, 630, 759, 975, 1053, 1134, 1395, 1584, 1998, 2109, 2709, 2838, 2970, 3105, 3384, 3528, 3825, 4134, 4455, 4620, 4788, 4959, 5133, 5310, 5673, 5859, 6834, 7038, 7668, 7884, 8325, 8778, 9009, 9243, 9480, 10209, 10710, 11223, 11484, 12285, 12558, 12834, 13113, 13968, 14259, 14553, 15453, 15759, 17334, 17985, 18315, 18984, 19665,

Esta sucesión estaba inédita, y la hemos publicado en https://oeis.org/A292309.

En PARI quedaría este código, algo más complicado de entender, aunque es un reto poder interpretarlo:

t=3;k=2;while(t<=600,i=k;e=0;v=t+i;while(i>0&&e==0,if(issquare(8*v+1),m=3*t;e=1;print1(m,", "));i+=-1;v+=i);k+=1;t+=k)

Estos números, dada su definición, pertenecerán a la sucesión  de números triples de triangulares,  http://oeis.org/A045943

Propiedad de Claudio Meller

Nuestro amigo Claudio Meller caracterizó estos números triple de triangulares mediante esta propiedad: Estos números son los menores que se pueden escribir como suma de n-1 números consecutivos y también como suma de n números consecutivos.

Es tan interesante que merece la pena demostrarla. Sea k el inicio de la suma de n consecutivos y h el inicio de la otra suma de n-1. Ambas sumas son iguales, y podemos plantear:

k+k+1+k+2+…k+n-1=h+h+1+h+2+…h+n-2
kn+n(n-1)/2=h(n-1)+(n-1)(n-2)/2
h(n-1)-kn=(n-1)/2(n-n+2)=n-1
h-kn/(n-1)=1

k ha de ser, pues, múltiplo de n-1, y si es el mínimo, valdrá n-1 y h es n+1. Así queda:

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

Con esto queda demostrada.

Por ejemplo, en el 63, n=7, k=6, h=8, y resulta:
6+7+8+9+10+11+12=63
8+9+10+11+12+13=63

Propiedad de Ivan Hurt

También esta es interesante: El triple del triangular de orden n es suma de los números comprendidos entre n y 2n.

Es fácil de comprobar: n+n+1+n+2+…+n+n=n*(n+1)+n(n-1)/2=n(n+1+(n-1)/2)=n(3n-2-1)/2=3n(n-1)/2

Terceras partes

3, 21, 28, 36, 78, 105, 153, 171, 190, 210, 253, 325, 351, 378, 465, 528, 666, 703, 903, 946, 990, 1035, 1128, 1176, 1275, 1378, 1485, 1540, 1596, 1653, 1711, 1770, 1891, 1953, 2278, 2346, 2556,…

Las terceras partes de los números que estamos estudiando no han sido publicadas, por lo que las hemos incorporado a https://oeis.org/A292310.

Los podemos definir como números triangulares que son equidistantes de otros dos triangulares. Así 666 es el triangular número 36, y es promedio entre 6, triangular tercero, y 1326, que es número 51.

lunes, 30 de octubre de 2017

Cartesius(8) Particiones curiosas


Desde hace unos meses publico cálculos sobre la fecha del día en Twitter (@connumeros). Entre ellos aparecen algunos que se pueden desarrollar con Cartesius. Veamos unos ejemplos:

Sumas simétricas de cuadrados

El número 2147 se puede descomponer en una suma simétrica de tres cuadrados:
2147=23^2+33^2+23^2

¿Cómo encontrar, si existen, particiones similares en otro número?

El conjunto de condiciones es muy simple. Para el número 1298 sería:

xtotal=2
xt=1..37
x1=suc(n^2)
x2=suc(2*n^2)
suma=1298

El número de columnas es dos, porque los cuadrados iguales los agrupamos en un solo sumando. El rango 1..37 está elegido mediante la raíz cuadrada entera de 1298 por exceso. Finalmente, el primer sumando recoge un cuadrado y el segundo dos.

El resultado es:



Arriba aparecen dos juegos de sumandos y debajo hemos añadido la raíz cuadrada del primer sumando y la de la mitad del otro, resultando las bases (24,19) y (36,1), que dan lugar a las descomposiciones simétricas:

1298=19^2+24^2+19^2
1298=1^2+36^2+1^2

Otros números no admiten ninguna suma de este tipo. Inténtalo con 1300.
Se pueden imaginar otros conjuntos de condiciones. El siguiente es más intuitivo, pero algo más lento:

xtotal=3
xt=1..37
xt=suc(n^2)
es x1=x2
suma=1298
creciente

En él exigimos que X1=X2 y que los sumandos sean todos cuadrados. De esta forma aparecen los cuadrados iguales de forma más clara:


Algo más difícil de encontrar es un conjunto con cuatro cuadrados iguales y otro distinto, que puede ser el central. Así ocurre con el número 117:

117=3^2+3^2+9^2+3^2+3^2

Para otros números, por ejemplo el 116, vale este conjunto de condiciones:

xtotal=2
xt=1..11
x1=suc(n^2)
x2=suc(4*n^2)
suma=116

Es similar al caso de tres sumandos, cambiando 2*n^2 por 4*n^2. Obtenemos:



Se pueden interpretar como:

116=5^2+5^2+4^2+5^2+5^2
116=2^2+2^2+10^2+2^2+2^2

Finalmente, una simetría muy atractiva es la de cuadrados alternados.

210=4^2+9^2+4^2+9^2+4^2

Como en casos anteriores, no todos los números enteros las admiten. Las condiciones pueden ser:

xtotal=2
xt=1..11
x1=suc(2*n^2)
x2=suc(3*n^2)
suma=210

Dan lugar al juego de cuadrados anterior y otro más:

210=8^2+3^2+8^2+3^2+8^2

Te dejamos abiertas otras posibilidades similares.


Sumas de potencias

Esta descomposición es más difícil de lograr. Por ejemplo, se puede intentar descomponer un número en potencias de 2 y de 3. Si no permitimos repetir sumandos hanrá menos posibilidades. Intentemos conseguirlo con cinco sumandos, dos para la base 2 y tres para la base 3 (podían ser otros).

En el caso de 113 lo logramos:

xtotal=2
x1=1..8
x2=1..4
x1=suc(2*2^n)
x2=suc(3*3^n)
suma=113

Si has entendido los ejemplos anteriores comprenderás cómo funciona este. Hemos asignado rangos distintos para X1 y X2 para ahorrar tiempo. El resultado obtenido ha sido:

Se puede interpretar como:

113=2^4+2^4+3^3+3^3+3^3

También se pueden intentar sumandos únicos. Por ejemplo:

10817=22^3+13^2

Te dejamos que concretes las condiciones. Ese mismo número, 10817, admite una suma simétrica con cuadrado y cubo:

10817=61^2+15^3+61^2

Potencias superiores

Por experiencia sabemos que no es fácil la descomposición en potencias cuartas. Aquí tienes las condiciones para descomponer 210:

xrango=5
xt=1..6
xt=suc(n^4)
suma=210
creciente

Hemos tenido que llegar a cinco sumandos en este caso:

210=2^4+2^4+2^4+3^4+3^4

Prueba con otros números, y verás que es difícil que admitan estas descomposiciones.

Una curiosidad que se publica en las redes es la de descomponer un número en suma de potencias de sus cifras. Es muy raro que esto ocurra. Si quieres experimentar, puedes usar algo similar a esto:

xtotal=4
x1=1..12
x2=1..7
x3=1..4
x4=1..4
x1=suc(2^n)
x2=suc(3^n)
x3=suc(5^n)
x4=suc(6^n)
suma=2356

Este es el planteamiento para el 2356 (elegido al azar). Hemos ajustado los rangos para x1, x2, x3 y x4 de la forma una forma óptima, y se han obtenido dos soluciones:



Corresponden a dos sumas de potencias:

2356=2^3+3^7+5^3+6^2
2356=2^7+3^7+5^1+6^2

Productos cíclicos

Con expresiones similares podemos buscar sumas de otros tipos. Un ejemplo que solemos publicar es el de productos cíclicos de tres factores, del tipo

N=a*b+b*c+c*a

No es demasiado complicado organizar un conjunto de condiciones que lo logre. Es aconsejable un rango de búsqueda que llegue hasta la raíz cuadrada de N, para que no se nos escape ninguna posibilidad. Proponemos estas condiciones, en el caso de N=324

xtotal=3
xt=1..18
es x1*x2+x2*x3+x3*x1=324
creciente

La condición interesante es la tercera, que mediante la condición ES obliga a una suma de productos cíclicos con tres factores. Obtenemos:


Podemos comprobarlo:

324=4*13+13*16+16*4
324=6*9+9*18+18*6
324=6*12+12*14+14*6


jueves, 19 de octubre de 2017

Suma de cuadrado y capicúa


Hoy comenzamos con una cuestión sencilla que nos va a permitir algún desarrollo:

¿De cuantas formas se le puede restar a N un cuadrado y que la diferencia sea capicúa?

Operaremos con capicúas de al menos dos cifras, pues el conjunto de 0 a 9, aunque se consideran capicúas, produce resultados sin interés. Con nuestra herramienta Cartesius (http://www.hojamat.es/sindecimales/combinatoria/herramientas/herrcomb.htm#cartesius) el estudio es muy simple. Basta usar las condiciones siguientes, que hemos particularizado para el número 892:

xtotal=2
xt=1..1000
X1=filtro(cuadrado)
x2=filtro(capicua)
suma=892

En ellas se suman dos números del 1 al 1000 filtrando el primero como cuadrado y el segundo como capicúa. El resultado es

Como vemos, se obtienen cinco soluciones.

Número de descomposiciones

Con Cartesius se presenta el proceso de forma clara, pero para contar soluciones es preferible otra herramienta. Comenzaremos con el BASIC de las hojas de cálculo. Se puede definir fácilmente una función que cuente las sumas que se producen. Necesitaremos la función ESCAPICUA y con ella organizar un bucle de búsqueda. Dispones de su código al final de la entrada. La función requerida para encontrar esas sumas puede ser la siguiente:

Public Function numcuadcapi(n)
Dim x, p

p = 0 ‘ Contador de soluciones
For x = 1 To Sqr(n) ‘Llegamos hasta la raíz cuadrada de N
If escapicua(n - x ^ 2) Then p = p + 1 ‘Si es capicúa la diferencia, se incrementa el contador
Next x
numcuadcapi = p
End Function

Hay que tener en cuenta que ESCAPICUA no considera números de una cifra.

La probamos con el 892 y resultan cinco soluciones.

Si deseáramos leer esas soluciones, convertiríamos la función en una variable tipo texto para que las recogiera. Usaríamos esta variante:

Public Function numcuadcapi2$(n)
Dim x, a, b
Dim nc$

nc$ = ""
For x = 1 To Sqr(n)
a = x ^ 2
b = n - a
If escapicua(b) Then nc$ = nc$ + " CUAD " + Str$(a) + " CAP " + Str$(b)
Next x
numcuadcapi2 = nc$
End Function

Vemos en la imagen los dos tipos de resultados:

El segundo coincide con el obtenido en Cartesius.

La primera función nos permite obtener un listado de los números que admiten al menos una descomposición de este tipo:

12, 15, 20, 23, 26, 27, 31, 34, 36, 37, 38, 42, 45, 47, 48, 49, 53, 56, 58, 59, 60, 64, 67, 69, 70, 71, 75, 78, 80, 81, 82, 86, 89, 91, 92, 93, 97, 100, 102, 103, 104, 105, 108, 110, 111, 112, 113, 114, 115, 117, 119, 120,…

Con el lenguaje PARI se consigue la misma lista:

ispal(n)={n==eval(concat(Vecrev(Str(n))))&&n>=10}
numsumsqpal(n)={p=0;for(i=1,sqrt(n),if(ispal(n-i^2),p+=1));p}
for(x=1,100,q=numsumsqpal(x);if(q>=1,print1(x,", ")))

12, 15, 20, 23, 26, 27, 31, 34, 36, 37, 38, 42, 45, 47, 48, 49, 53, 56, 58, 59, 60, 64, 67, 69, 70, 71, 75, 78, 80, 81, 82, 86, 89, 91, 92, 93, 97, 100, 102, 103, 104, 105, 108, 110, 111, 112, 113, 114, 115, 117, 119, 120, 122, 124, 125, 126, 127, 130, 132, 133, 135, …

Entre los menores de 1000 el record lo tiene 817, con siete descomposiciones




Cuadrados con base capicúa

Podemos repetir el estudio pero exigiendo que la base del cuadrado sea también capicúa. Modificaremos los códigos para exigirlo. Con Cartesius habrá que modificar las condiciones:

xtotal=2
x1=1..32
x2=10..1000
xt=filtro(capicua)
es x1*x1+x2=892

Recorremos con X1 hasta la raíz de 892, con X2 hasta 1000, y exigimos que x1*x1+x2=892

Como era de esperar, no se obtiene ninguna solución, pero sí la tienen números cercanos a 892: 898 presenta dos soluciones, 11^2+777 y 22^2+414. Igual ocurre con 908, que es igual 11^2+787 y a 22^2+424. El resto de número próximos no presenta esta propiedad.

Con BASIC y PARI, añadiendo la condición de que la base sea capicúa mayor que 10, obtenemos un listado de los números que equivalen a este tipo de suma al menos de una forma:

132, 143, 154, 165, 176, 187, 198, 209, 220, 222, 232, 242, 252, 262, 272, 282, 292, 302, 312, 323, 333, 343, 353, 363, 373, 383, 393, 403, 413, 424, 434, 444, 454, 464, 474,…

El código PARI adecuado sería:

ispal(n)={n==eval(concat(Vecrev(Str(n))))&&n>=10}
numsumsqpal(n)={p=0;for(i=1,sqrt(n),if(ispal(i),if(ispal(n-i^2),p+=1)));p}
for(x=10,1000,q=numsumsqpal(x);if(q>=1,print1(x,", ")))

Devuelve el listado

132, 143, 154, 165, 176, 187, 198, 209, 220, 222, 232, 242, 252, 262, 272, 282, 292, 302, 312, 323, 333, 343, 353, 363, 373, 383, 393, 403, 413, 424, 434, 444, 454, 464, 474, 484, 494, 495, 504, 506, 514, 517, 525, 528, 535, 539, 545, 550, 555, 561, 565, 572, 575, 583, …

Se distinguen en la lista muchos números que son capicúas. Los extraemos:

ispal(n)={n==eval(concat(Vecrev(Str(n))))&&n>=10}
numsumsqpal(n)={p=0;if(ispal(n),for(i=1,sqrt(n),if(ispal(i),if(ispal(n-i^2),p+=1))));p}
for(x=10,1000,q=numsumsqpal(x);if(q>=1,write1("final.txt",x,", ")))

222, 232, 242, 252, 262, 272, 282, 292, 323, 333, 343, 353, 363, 373, 383, 393, 424, 434, 444, 454, 464, 474, 484, 494, 525, 535, 545, 555, 565, 575, 585, 595, 626, 636, 646, 656, 666, 676, 686, 696, 727, 737, 747, 757, 767, 777, 787, 797, 828, 838, 848, 858, 868, 878, 888, 898, 929, 939, 949, 959, 969, 979, 989, 999,…

Están todos los capicúas de tres cifras salvo los que tienen las decenas con valor 0 o 1. Es porque los capicúas al cuadrado solo pueden ser 11^2=121 y 22^2=484. Todo capicúa con la segunda cifra mayor que 1 y las otras no nulas produce al restarle 121 otro capicúa, pero en caso contrario, si las decenas son 0 o 1, la cifra de arrastre impide un resultado capicúa. Igual ocurre con el 484, que exige un 8 o 8n 9 en las decenas.

Hemos experimentado con sumas de triangular y capicúa, o con primos, pero aparecen muchos resultados que trivializan la cuestión. La dejamos abierta.

Anexo

Código de la función ESCAPICUA

Public Function escapicua(n) As Boolean
Dim l, i, k
Dim c As Boolean
Dim auxi$,nn$

nn$ =Str$(n)
auxi= Right(nn$, Len(nn$) - 1)
l = Len(auxi)
If l < 2 Then
escapicua = False
Else
c = True
i = 1
k = Int(l / 2)
While i <= k And c
  If Mid(auxi, i, 1) <> Mid(auxi, l - i + 1, 1) Then c = False
  i = i + 1
  Wend
End If
escapicua = c
End Function

lunes, 9 de octubre de 2017

Cartesius(7) - Particiones especiales


Esta entrada desarrolla varias descomposiciones clásicas de un número en sumandos de cierto tipo, como en tres números triangulares, cuatro cuadrados o dos o tres primos. En otra entrada añadiremos otras que hemos usado en las redes sociales, como capicúas, cuadrados simétricos o productos cíclicos.

Teorema de Javier Cilleruelo

El matemático español recientemente fallecido Javier Cilleruelo demostró que todo número natural es suma de tres capicúas en cualquier base de numeración mayor o igual que 5.

Para el cumplimiento del teorema consideraremos (y así se suele hacer) como capicúas los números de una sola cifra. Podemos también incluir el cero o no, porque lo que deseamos es efectuar comprobaciones a nuestro criterio. Si deseas excluir los de una cifra en tus descomposiciones (aunque no se cumpla el teorema) puedes definir XT=11..200, por ejemplo, en los rangos de sumandos. Aquí no lo haremos así.

Un ejemplo: descomposición del número 167

Como ignoramos la cota de cada sumando, deberemos definir XT=1..167. Para que los sumandos sean capicúas filtraremos usando filtro(capicua). Definimos tres columnas de sumandos y el resto es sencillo de entender. Quedaría así:

Como hemos admitido capicúas de una cifra obtenemos bastantes resultados:



Si definimos el rango como XT=11..167 reduciremos los casos a dos o más cifras.


Observamos que entre ellos hay una descomposición simétrica: 33+101+33. En Twitter (@connumeros) publicamos casos simétricos de este tipo. Podemos obligar a que los dos primeros sumandos sean iguales, añadiendo ES X1=X2 a las condiciones. Así lo hemos efectuado con el número 231 obteniendo tres resultados:


Hemos supuesto algo que no nos consta, y es que los sumandos iguales son los dos primeros, pero podían ser los últimos (recuerda que al ser creciente no se dará la igualdad de primero y último salvo que los tres sean iguales)

Podemos tenerlo previsto si cambiamos ES X1=X2 por ES (X1=X2)+(X2=X3)
Funciona esta condición porque en Cartesius la suma en este caso equivale a la conectiva O lógica. Lo hemos aplicado al 111 admitiendo capicúas de una cifra y se perciben muy bien los dos casos:



Los filtros en Cartesius pueden resultar lentos, porque se selecciona elemento a elemento. Hay que ejercitar la paciencia en casos más complejos. El siguiente listado, correspondiente a sumandos de tres cifras para generar el número 636, ha tardado algunos minutos.



Teorema de Lagrange

Todo entero positivo es suma de cuatro cuadrados.

Es evidente que pueden ser menos de 4, por lo que usaremos XRANGO=4 en lugar de XTOTAL=4.

Este caso resulta más rápido que el anterior. Hay dos razones para ello. Por una parte, no es necesario usar filtros, porque los cuadrados se pueden definir mediante la condición XT=SUC(n^2), lo que nos lleva a la segunda ventaja, y es que el rango se reduce a la raíz cuadrada del número dado.

Comenzamos este caso con el número 874 (elegido al azar). El planteo podría ser:



Se toma xrango=4 para que también aparezcan sumas de dos o tres cuadrados. El intervalo se toma de 1 a 30, que es la raíz cuadrada de 874 por exceso. La condición suc(n^2) exige que los sumandos sean cuadrados. Después sigue que la suma sea la pedida, 874, y que los sumandos estén ordenados de forma creciente.

Con ese planteamiento resultan 40 casos, de los que insertamos algunos:


Todos esos cuadrados suman 874. En el mismo desarrollo, mediante la función RAIZ puedes adjuntar las bases de esos cuadrados. Aquí tienes un recorte:


Lagrange demostró que bastan tres cuadrados, salvo en unos casos poco  numerosos, que son aquellos números que se pueden escribir como 4^k*(8m+7).

Para comprobar esta variante del problema basta definir XTOTAL=3. Hemos preparado así un listado de números del 600 al 610 con una descomposición en tres cuadrados para cada uno (hay más)



Vemos que faltan el 604 y el 607, y es que pertenecen a las excepciones, ya que 604=4^1*(8*18+7) y 607=4^0*(8*75+7)

Teorema de Gauss

Todo entero positivo es suma de tres números triangulares.

Este es el más popular de este tipo de teoremas. En esta imagen tan conocida expresó con ¡Eureka! su alegría por haber encontrado esta propiedad.



Con la condición SUC de Cartesius basta para engendrar los triangulares. Escribiremos XT=SUC(n*(n+1)/2)

Quedaría así en el caso de N=107:



Usamos XRANGO por si basta con un triángulo o dos. La cota 22 es la suficiente para llegar a 107. Después se definen los triangulares mediante xt=suc(n*(n+1)/2), y finalmente se ajusta la suma. Si se añade la condición CRECIENTE para eliminar repeticiones, resultarían cuatro descomposiciones:


Con Cartesius es fácil descubrir los sumandos triangulares. En una entrada ya antigua de este blog proponemos otro algoritmo para encontrarlos:
http://hojaynumeros.blogspot.com.es/2009/12/suma-de-tres-numeros-triangulares.html

Teorema de los poligonales

Fermat extendió las propiedades anteriores a sumas de cinco pentagonales, seis hexagonales y así con cualquier número de lados. Lo intentamos con pentagonales:

Los números pentagonales 1, 5, 12, 22, 35, 51, 70, 92,… se engendran con la expresión n(3n-1)/2

Así que basta adaptar lo expuesto anteriormente al caso de cinco sumandos del tipo pentagonal. Incluimos el planteamiento para el número 68:



Y el resultado:


Conjetura de Goldbach para impares

Todo número impar mayor que cinco se escribe como la suma de tres números primos.

Para comprobar esta conjetura volveremos a los filtros. Si los sumandos han de ser primos, usaremos FILTRO(PRIMO). En el siguiente ejemplo lo usamos para descomponer el número 67



Definimos tres columnas con rango 1..67 y filtro primo. Después obligamos a que la suma sea 67. Resultan 20 soluciones:



En la siguiente entrada desvelaremos algún secreto de nuestra publicaciones diarias sobre fechas en Twitter @connumeros.



viernes, 29 de septiembre de 2017

Sumas del tipo m+n+mn


Como en otras ocasiones, cualquier comentario o reto aparecido en las redes sociales nos sirve de excusa para emprender un estudio. Hoy nos dedicaremos al número de descomposiciones del tipo k=m+n+mn (m>0 y n>0) que puede presentar un número k. A efectos prácticos podemos suponer que n es mayor o igual a m.

El número 99, por ejemplo, admite cuatro descomposiciones:

99=3+24+3*24
99=4+19+4*19
99=9+9+9*9
99=1+49+1*49

Otros números tan populares como el 30 no admiten ninguna descomposición de este tipo.

¿De cuántas formas se puede descomponer un número determinado? Como en ocasiones similares, comenzaremos con procedimientos de “fuerza bruta”, para ir después refinando el estudio hasta llegar al planteamiento teórico.

Con el Basic de Excel y Calc

En primer lugar debemos considerar que el valor mínimo para m y n es 1, luego el valor máximo será:

Si k=m+n+mn y damos a m el valor 1, despejando n resulta:

K=1+n+n, luego n<=(k-1)/2 y este valor sería la cota para m y n. Por otra parte, al despejar n en general, n=(k-m)/(m+1), este valor ha de ser entero y mayor que m (si queremos evitar repeticiones). Con esto ya podemos construir un algoritmo para contar el número de descomposiciones de este tipo que presenta un número dado.

Public Function numsumamn(k)
Dim m, n,  p

p = 0 ‘Contador de éxitos
For m = 1 To (k - 1) / 2 ‘m recorre el rango desde 1 hasta la cota
n = (k - m) / (m + 1) ‘El valor de n se despeja respecto a m
If n >= m And n = Int(n) Then p = p + 1 ‘Si es entero y mayor o igual a m, vale
Next m
numsumamn = p
End Function

Con este algoritmo podemos confeccionar tablas para esta función. La siguiente corresponde a los 20 primeros números:



Vemos que, por ejemplo, el 15 debe descomponerse de dos formas. Aquí las tienes:

1+7+1*7=15; 3+3+3*3=15

Algoritmo con el lenguaje PARI

Este algoritmo se traduce con facilidad al lenguaje PARI:

numsumamn(k)=local(p=0);for(m=1,(k-1)/2,n=(k-m)/(m+1);if(n==truncate(n)&&n>=m,p+=1));p

Con él y una estructura repetitiva puedes encontrar un listado de enteros con un número de descomposiciones fijado. El siguiente código nos devuelve los primeros números que admiten tres descomposiciones:

numsumamn(k)=local(p=0);for(m=1,(k-1)/2,n=(k-m)/(m+1);if(n==truncate(n)&&n>=m,p+=1));p
for(i=1,200,if(numsumamn(i)==3,print1(i,", ")))





Veamos el caso del 55: 1+27+1*27=3+13+3*13=7+6+7*6=55

Se obtienen las tres descomposiciones previstas.

Puedes experimentar con estos algoritmos, aunque al final de la entrada aprenderás un método mucho más eficiente.

Comprobación con Cartesius

Nuestra hoja de cálculo Cartesius (http://www.hojamat.es/sindecimales/combinatoria/herramientas/herrcomb.htm#cartesius),que desarrolla productos cartesianos condicionados, nos puede servir para comprobar los valores de la función numsumamn. Como sabemos que la cota para m y n es (k-1)/2, (o k/2 para simplificar), bastará combinar los distintos valores de ambos y destacar tan solo aquellos en los que m+n+mn=k. Quedaría así en el caso de k=71:



En primer lugar se fijan 2 elementos (serían m y n). Después se hacen recorrer el rango 1..36, que es la cota aproximada por exceso. La parte importante es la de exigir es x1+x2+x1*x2=71, según la cuestión que estamos resolviendo, y, por último, pedimos arreglos crecientes para eliminar duplicidades. Nos deberían dar 5 soluciones, según el valor de numsumamn(71), y, en efecto, los resultados son:


Lo podemos calcular: 1+35+1*35=36+35=71; 2+23+2*23=25+46=71; 3+17+3*17=20+51=71;
5+11+5*11=16+55=71; 7+8+7*8=15+56=71.

Puedes comprobar así cualquier valor de numsumamn(k)

Estudio teórico

Todo lo anterior se basa en un estudio “ingenuo”, en el que no se analiza la cuestión y sólo se pretende obtener resultados. Ahora veremos que los mismos tienen un fundamento teórico muy simple, que nos llevará a una fórmula para el número de descomposiciones del tipo m+n+mn=k

Basta darse cuenta de que la expresión estudiada equivale a (m+1)(n+1)-1. Por ejemplo, 2+35+2*35=37+70=107 es igual a (2+1)(35+1)-1=3*36-1=108-1=107.

Esto nos aclara la situación, porque el número de descomposiciones del tipo m+n+mn para un número k coincide con el de los pares de divisores cuyo producto es k+1. Así, las cuatro descomposiciones del número 99 (3+24+3*24, 4+19+4*19, 9+9+9*9, 1+49+1*49) coinciden con todos los pares de divisores (m+1)(n+1) del número k+1, en este caso 100. En efecto, los pares son: 2*50, que da lugar a 1+49+1*49, 4*25, que produce 3+24+3*24, 5*20 para 4+19+4*19 y 10*10, que se empareja con 9+9+9*9

El número de descomposiciones de k en expresiones m+n+mn coincide con el del número de pares de productos p*q=k+1 con p>1 y q>1.

El número de pares de este tipo está relacionado con la función TAU de k+1, que cuenta el número de divisores que posee k+1, y que tiene la expresión

En ella los valores de a1, a2,, a3,,…son los exponentes de los factores primos de k+1. Si el valor de esa función es par, el número de productos p*q=k+1 será la mitad, y si es impar, la mitad más 1. A ese resultado habrá que restarle 1, porque el par 1*(k+1) no nos sirve. Así que quedaría:



Podemos comprobarlo con ejemplos concretos:

K=23; 24=23*3; TAU(24)=(1+3)(1+1)=8; 8/2-1=3. Los pares válidos de divisores serán 2*12, 3*8, 4*6. Así que 23 debe admitir tres descomposiciones. Es fácil ver que son estas: 1+11+1*11, 2+7+2*7 y 3+5+3*5. Aquí tienes la comprobación con Cartesius:



En el caso de k+1=144, cuadrado perfecto, su función TAU es impar, lo que da sentido al hecho de que usemos la parte entera. Lo vemos:

K=143; k+1=144; 144=24*32; TAU(144)=(1+4)(1+2)=15; INT((15+1)/2)=8; 8-1=7.

Deberán aparecer 7 soluciones para los productos de divisores:2*72, 3*48, 4*36, 6*24, 8*18, 9*16, 12*12. Existirán, pues, 7 soluciones para nuestro problema. Las conseguimos con Cartesius:



Puedes irlas comprobando: 1+71+1*71=72+71=143; 2+47+2*47=49+94=143,…

Casos particulares

K+1 primo

Según lo anterior, los valores de k tales que k+1 sea primo, no admitirán la descomposición en m+n+mn.

Recuerda que entre los primeros 20 números tenemos (ver tabla de arriba) que 1, 2, 4, 6, 10, 12, 16, y 18 no admiten descomposiciones m+n+mn. Súmales una unidad y te resultarán los primeros primos: 2, 3, 5, 7, 11, 13,…

K+1 semiprimo

Los semiprimos poseen sólo dos factores primos, luego en ellos TAU=(1+1)(1+1)=4, y como 4/2-1=1, resultará que k sólo admitirá una descomposición. Es el caso de 3, 5, 8, 9,…en los que k+1 es semiprimo: 4=2*2, 6=2*3, 9=3*3, 10=2*5.

La propiedad contraria no es cierta, ya que 7 sólo admite la descomposición 1+3+1*3 y 8 no es semiprimo.

K+1 cuadrado

Si k+1 es cuadrado, k presentará una suma en la que m=n, como es fácil ver. Si k+1=p*p, k será igual a p-1+p-1+(p-1)(p-1). Es el caso, por ejemplo de 48, ya que 49=7*7 y 48=6+6+6*6.

Lo dejamos aquí. Este tipo de cuestiones elementales que dan lugar a experimentaciones sencillas se pueden abordar en las clases de Matemáticas de la Enseñanza Media. Sería divertido lanzar la idea en un trabajo por grupos y ver cada uno qué caminos emprende en sus búsquedas. No sería extraño que alguno diera con el truco del k+1.