jueves, 21 de febrero de 2019

Suma y diferencia de fracciones egipcias unitarias



Recordamos que una fracción egipcia unitaria es aquella de numerador igual a la unidad. Una fracción egipcia en general es una suma de varias fracciones egipcias unitarias.

Puedes consultar


Lo que nos interesa en esta entrada es encontrar sumas o diferencias de dos fracciones de este tipo unitarias, cuyo resultado también sea unitario. En concreto, deseamos encontrar tres valores enteros positivos a, b y c tales que


Simultáneamente estudiaremos su correspondiente expresión como diferencia:


Un ejemplo clásico es 1/2=1/3+1/6, o bien 1/3 = 1/2 - 1/6

Existe una solución trivial para cada valor de a y es que


Para evitar esa solución supondremos que b>c en 


 (podría ser a la inversa, pero llamamos b al mayor de los dos).

Es evidente que 1/a es mayor que 1/b y 1/c, luego a<b y a<c. Como hemos supuesto que b es el mayor, tendremos la doble desigualdad a<c<b.

Búsqueda mediante un algoritmo

Siguiendo nuestra metodología habitual, buscaremos soluciones en primer lugar y después las analizaremos. Si deseamos encontrarlas fácilmente, será bueno darle protagonismo a b, para que los valores de a y de c sean menores que él y se pueda acudir a un doble bucle, en el que c recorra (en principio) desde 2 hasta b-1 y a desde 1 hasta b-2. Por tanto b>2. Nos dedicaremos a la diferencia de fracciones, que sabemos que es equivalente a la cuestión de la suma.

Función sumaegipcias(b)

Hemos comenzado la búsqueda mediante la siguiente función que devuelve, para cada b, los valores posibles de a y c. Al ser varias las posibles soluciones, se devolverán en modo texto, para tener una visión global de todas ellas. La función que se presenta más abajo usa el hecho de que el valor de b despejado en la condición general es a*c/(c-a).

Su listado es el siguiente:

Public Function sumaegipcias$(b)
Dim a, c, d
Dim s$

s$ = "" ‘Recibirá las soluciones en modo texto
If b < 3 Then sumaegipcias = "NO": Exit Function
For c = 2 To b – 1 ‘Bucles de búsqueda
For a = 1 To c - 1
d = a * c / (c - a) ‘Fracción que ha de ser entera
If d = Int(d) Then If d = b Then s$ = s$ + "1/" + Str$(a) + "-" + "1/" + Str$(c) + "   "
‘Si es entera y coincide con b, se recoge en s$
Next a
Next c
If s$ = "" Then s$ = "NO" ‘Si la cadena está vacía, es que no hay solución
sumaegipcias = s$
End Function

Aplicada esta función a un conjunto de números, por ejemplo desde el 6 hasta el 15, observamos que no todos admiten esta descomposición:


Sólo la cumplen 6, 12 y 15. El 12 por partida doble. Puedes verificar estas igualdades (escritas como diferencias, pero podrían ser sumas):

1/6=1/2-1/3, 1/12=1/3-1/4, 1/12=1/4-1/6, 1/15=1/6-1/10

Aquí tienes los valores de b entre 1 y 100 que admiten la descomposición pedida:

6, 12, 15, 18, 20, 24, 28, 30, 35, 36, 40, 42, 45, 48, 54, 56, 60, 63, 66, 70, 72, 75, 77, 78, 80, 84, 88, 90, 91, 96, 99, 100

Estos valores te pueden dar alguna pista. Reflexionamos sobre ellos:

Escribamos c-a=k, con lo que el cociente b=a*c/(c-a) se convierte en b=(a+k)*a/k. Así lo analizamos mejor.

El denominador b no puede ser primo

En efecto: Al ser entero (a+k)*a/k puede ocurrir:

Si k divide a a: entonces k1=a/k y  b=k1(a+k). b tendría al menos dos factores (si k=a nos encontraríamos con la solución trivial de más arriba, en la que b=2a y que no consideramos)

Si k no divide a a: Llamemos d=MCD(a,k). Ese valor d no puede ser 1, pues entonces k sería primo con a, pero como tiene que dividir a a+k, dividiría a  (a+k)-k=a, lo que llevaría a una contradicción.

Si d>1, se podría simplificar b=(a+k)*a/k entre d, resultando los cocientes a’=a/d y k’=k/d: b=(a+k)*a/k=(a+k)*a’/k’, en el que k’ es primo con a’, luego, por el teorema de Euclides, k’ ha de dividir a (a+k), luego divide a la diferencia a+k-k=a. Así que k’ es un divisor de a. De esa forma b=a’*p, siendo a’>1 (ver el párrafo anterior) y p=(a+k)/k’>1, luego no puede ser b primo.

La diferencia c-a=k es menor que a

De la igualdad b=(a+k)*a/k deducimos b*k=(a+k)*a=c*a, pero sabemos que b>a y b>c, luego la igualdad solo es posible si k<a<c.

Este largo razonamiento nos ha descubierto que, o bien k divide a a, como es el caso en

1/12=1/4-1/6, en el que k=6-4=2 y divide a 4,

o bien unos factores de k dividen a a y otros a a+k, ambos mayores que 1. Sería el caso

1/15=1/6-1/10, en el que k=10-6=4=2*2 y 2 divide a 6 y “el otro” 2 al 10, resultando b=6*10/4=15.

Más adelante daremos una caracterización de estos números.

Otro algoritmo

Esta sección la puedes dejar si no te interesa demasiado la construcción de algoritmos.

Otro planteamiento parte de que  según lo anterior, b*k=c(c+k), hay que buscar  un número tal que si lo multiplico por k, se pueda descomponer en dos factores con diferencia k. Por ejemplo, 12 multiplicado por 2 da 24 que tiene dos factores, 4*6 diferenciados en 2.

El valor de c sería una solución de la ecuación c2+kc-bk=0, es decir:


De esa forma  el valor de c no se obtiene por búsqueda, sino por cálculo. Lo implementamos como otra función

Public Function sumaegipcias2$(b)
Dim k, c
Dim s$

s$ = ""
If b < 3 Then sumaegipcias2 = "NO": Exit Function
For k = 1 To b - 1
c = (-k + Sqr(k ^ 2 + 4 * b * k)) / 2 ‘Calculamos el valor de c
If c = Int(c) And c + k < b Then s$ = s$ + "1/" + Str$(c) + "-" + "1/" + Str$(c + k) + "   "
Next k
If s$ = "" Then s$ = "NO"
sumaegipcias2 = s$
End Function

Comprobamos que son equivalentes:


Es más rápida de proceso que la anterior.

Otra definición de los números encontrados

El listado de los valores de b está publicado, pero con otra definición distinta

Numbers having divisors d,e with d < e < 2d.

6, 12, 15, 18, 20, 24, 28, 30, 35, 36, 40, 42, 45, 48, 54, 56, 60, 63, 66, 70, 72, 75, 77, 78, 80, 84, 88, 90, 91, 96, 99, 100, 102, 104, 105, 108, 110, 112, 114, 117, 120, 126, 130, 132, 135, 138, 140, 143, 144, 150, 153, 154, 156, 160, 162, 165, 168, 170, 174, 175, 176

Según esto, las soluciones para nuestras diferencias de fracciones egipcias coinciden con aquellos números que poseen dos divisores a y b, en los que a<b<2a, es decir, que uno de ellos está comprendido entre el otro divisor y su doble. Si repasas el listado anterior, todos lo cumplen, e incluso algunos de ellos son producto de dos divisores de este tipo:

6=2*3, 35=5*7, 42=6*7, …

Entre ellos figuran los números oblongos, 6, 12, 20, 30, 42,…del tipo n(n+1), como puedes comprobar.

Demostramos esta equivalencia:

El contrarrecíproco es fácil de razonar. Si no existen estos pares de divisores, a<b<2a, cualquier expresión que construyamos similar a b=(a+k)*a/k, no podría garantizar que k es menor que a, como demostramos más arriba que era necesario.

Al revés, parto de que existen dos divisores de un número N tales que a<b<2a
Podemos suponer que son primos entre sí, pues, en caso contrario, dividimos entre su M.C.D. y seguirán siendo divisores y cumpliendo a<b<2a. Si son primos entre sí, su producto, que sería el M.C.M, no puede ser mayor que N (en ese caso el M.C.M. sería N). Así que a*b<=N.

Para mayor claridad, distinguimos dos casos:

N=a*b

Entonces bastará multiplicar ambos por k=b-a, con lo que tendremos N=a*b=a(a+k)=ak(ak+kk)/k^2, pero k^2 es la nueva diferencia, luego N tiene la forma deseada de a1(a1+k1)/k1

Por ejemplo, 77=7*11 multiplicamos por 4 y queda 1/77=1/28-1/44=(44-28)/(77*16)=16/(77*16)=1/77, y 1/77=1/28-1/44 

70=10*7, diferencia 3, multiplico: 70=30*21/9, luego 1/70=1/21-1/30

N=m*a*b

En este caso el producto de a*b no iguala a N, En ese caso multiplicamos a y b por mk, resultando:

N=mamk(amk+mkk)/mkmk y mkk es la nueva diferencia. Simplificando N=amk(amk+mkk)/mkk, que es del tipo pedido:

Ejemplo: 66 contiene al 2 y al 3, con 2<3<2*2 y se cumple 66=11*2*3. 
Multiplicamos ambos por su diferencia 1 y por m=11, resultando 22 y 33 y queda

66=22(22+11)/11, es decir
1/66=1/22-1/33
84=2*6*7, con 6<7<2*6. El M.C.D(6,7)=1, k=1, m=2, luego multiplicamos por 2*1=2, y queda 12 y 14:
84=12*14/2, luego 1/84=1/12-1/14

También podíamos haber usado 4 y 7, con 4<7<2*4, k=3, m=3, 84=3*4*7, y multiplicamos ambos por 3*3=9, lo que nos llevaría a 1/84=1/36-1/63.

Hemos descubierto esta equivalencia bastante interesante, pues caracteriza cuándo un valor puede ser denominador en una diferencia de fracciones egipcias.

lunes, 11 de febrero de 2019

Simulaciones - Distribución normal


Simulación normal

Seguimos hoy la serie de simulaciones que iniciamos en


En esas entradas vimos la distribución uniforme y la de Bernouilli. Hoy lo haremos con la normal.

Nos basaremos en esta también en las prácticas de nuestro curso de Estadística, (http://www.hojamat.es/estadistica/iniestad.htm) adaptándolas al formato de un blog. Usaremos nuestro Simulador implementado para hojas de cálculo, el cual puede sufrir cambios a lo largo de la serie, por lo que se aconseja su recarga en caso de duda.

Distribución normal

Si no recuerdas la distribución normal puedes acudir a la Teoría correspondiente

Por ahora basta con saber que siguen esa distribución normal de forma aproximada muchos datos tomados de nuestra vida diaria:

  • Magnitudes que dependen de muchas causas independientes, cuyos efectos se suman y cualquiera de ellas aislada tenga efectos despreciables.
  • Distribuciones de errores en las medidas.
  • Medidas de tipo antropológico (estaturas, pesos, inteligencia...) y biológico (glucemia, nivel de colesterol...)
  • Límite de otras distribuciones estadísticas cuando n aumenta.
  • Todas ellas producen gráficos con forma de campana de Gauss, más o menos aproximada.



Nuestro simulador puede producir datos aleatorios que sigan esta distribución normal.

Puedes descargarlo para Excel


Y para LibreOffice Calc


Esta herramienta está en desarrollo, por lo que debes ignorar las hojas no terminadas.

La forma más práctica de plantear una simulación de este tipo es la de dar el promedio de los datos y la desviación típica, pero también funciona conociendo el mínimo y el máximo esperados.

Lo vemos con algún ejemplo:

Los de más altura

En un Centro de Enseñanza se han tallado todos los alumnos y alumnas de un nivel, 128 en total y ha quedado como estatura mínima la de 140 cm, y como máxima, 198 cm. Si deseamos seleccionar a aquellas personas con estatura superior a 180 cm. ¿Cuántas esperaremos encontrar?

La teoría estadística puede responder a esta pregunta mediante las propiedades de la distribución normal. Aquí lo intentaremos con el Simulador:



Hemos concretado lo siguiente:
  • ·        Distribución normal con decimales (son estaturas) usando máximo y mínimo
  • ·        Mínimo 140 y máximo 198
  • ·        Una columna de 128 filas (número de alumnos y alumnas)
  • ·        Diez intervalos

Procura localizar bien todos esos datos en sus celdas correspondientes. Pulsa el botón “Simulador”.

Con este planteamiento la simulación se aproximará bastante a las medidas reales. Si pasas a la segunda hoja advertirás la forma típica de campana de esta distribución, y que la estatura media es aproximadamente de 169 cm., y la desviación típica cercana a 8. No podemos pretender resultados idénticos a los previstos por la teoría, pero comparando los estadísticos de la simulación con los valores teóricos, vemos que existe una buena aproximación.


La gráfica también tiene forma aproximada de campana, aunque con tan pocos elementos de simulación, nunca seguirá ese tipo teórico:


También, de paso, hemos descubierto que esperaremos unas 12 personas con más de 180 cm. Afinamos esto más. Busca el apartado de Intervalos en la hoja de 
resultados



Con esta tabla podemos contar fácilmente resultados sin tener que recorrerlos. 

Tiene un funcionamiento simple, y es el de escribir en la columna correspondiente (en nuestro caso la primera, porque solo hay una) los extremos entre los que deseamos contar resultados. En nuestro caso serían 180 y 198, que es el máximo. Ahora basta con pulsar el botón Intervalos y nos devolverá la frecuencia absoluta, 14, y la relativa, 0,11 aproximadamente, un 11%.

Repitiendo la simulación han resultado, en varios intentos, 15, 11, 8, 11  y 15, por lo que juzgamos que lo más probable es que nos encontremos con unos 11, lo que nos permitirá organizar un equipo de baloncesto, si ese era el objetivo.

Si conoces algo de la teoría de esta distribución, sabrás que existen funciones y tablas que te devuelven este dato de forma teórica, pero nuestro objetivo estaba en recoger los datos de una simulación, no en prever el resultado. En nuestro caso, y no seguiremos con el tema, la aproximación sería:

1-DISTR.NORM.N(180;169;8,2857;1)=0,092157044

Un poco menor que la obtenida del 11%, en este caso un 9,2%. Así funcionan los resultados en las simulaciones. Nunca esperes aproximaciones destacables.


Un ejemplo con media y desviación típica

Una población de 500 personas con riesgo de diabetes en una ciudad ha presentado un promedio de 106 mg/100ml de nivel de glucosa en sangre y una desviación típica de 8 mg/100ml. Diseñar una simulación para encontrar a partir de qué nivel encontraremos las 50 personas con más riesgo.

Organizamos la simulación, pero usando ahora media y desviación típica:



Obtendremos una columna con 500 niveles de glucosa y una distribución en forma de campana de Gauss.



En nuestra simulación se obtuvieron media y desviación bastante cercanas a las teóricas:


Si ahora deseamos obtener los cincuenta niveles más altos, nos bastará con ordenar la columna G de la primera hoja (de mayor a menor) y observar n qué nivel se encuentra el número 50:

Vemos que hay que comenzar por el nivel 116,4 para así poder seleccionar los 50 posibles pacientes con más riesgo. Si repites la simulación varias veces podrás quedarte con una media más aproximada.

También podemos trabajar con los intervalos cambiando el mínimo hasta obtener un resultado aproximado de 50 personas. En otra simulación nos da un tope de un nivel de 114 o 115:

Como en el caso anterior, se puede acudir a la teoría:

INV.NORM(0,9;106;8)=116,25

Hemos tomado de probabilidad 0,9 porque los 50 en una simulación de 500 representa un 10% superior y un 90% inferior. Nuestra simulación se queda un poco corta.

Medidas válidas

En una medición con mucho riesgo de errores se ha decidido rechazar aquellas medidas que se alejen de la media más de una desviación típica y media. Supongamos que en mediciones anteriores resultó una media de 65 y una desviación típica de 8. ¿Qué número aproximado de mediciones debemos efectuar para garantizarnos 200 medidas catalogadas como válidas, si la distribución en la población se puede considerar normal?

De nuevo acudimos a una simulación. Según los datos que nos dan, las medidas válidas estarán entre 65-3*8/2 y 65+3*8/2, es decir, entre 53 y 77. Comenzamos una simulación de 250 mediciones y concretamos 14 intervalos.

Observamos, de forma aproximada, que habría que desechar unas 10 medidas inferiores y unas 15 superiores, lo que nos daría 250-10-15=225 medidas válidas.


Esta observación se confirma también con intervalos:



Probamos con 230 simulaciones, pare ver si nos acercamos a 200 válidas.

Después de la simulación hay que desechar 16+18=34, con lo que nos quedamos cortos, 196. Subimos y bajamos el número de simulaciones y 230 parece quedar en la media, luego es aconsejable usar muestras de 230 medidas.

Esto ha sido una especie de juego. Si acudimos a la distribución normal teórica, descubriremos que el porcentaje esperado de medidas que se alejen más de 3/2 de desviación típica por un lado es de 0,066807201. Por los dos lados será 0,133614403, y restando de 1, el porcentaje de medidas válidas sería 0,866385597. Dividimos 200 entre ese porcentaje y obtenemos 230,844096.
Nuestra simulación no estaba descaminada.

Con este experimento también hemos aprendido que los porcentajes no dependen de una media concreta sino de la medida tipificada Z, que en este caso valía Z=1,5.


Obtención de muestras

En el caso de la distribución normal es muy interesante el disponer de muestras de un colectivo del que sabemos algunos parámetros (generalmente media y desviación típica). Vemos algunos ejemplos:

Distribución de errores

75,6       78,0       77,8       77,5
75,2       79,0       76,8       78,0
76,5       76,8       76,6       77,2
77,3       78,4       76,6       76,6
77,1       77,6       77,3       76,1

Los datos anteriores simulan 20 repeticiones de una medida. A simple vista parece que la media es 77. En el Simulador se ha obtenido media 77,1 y desviación típica 0,9. Esta tabla puede servir para que el alumnado obtenga también la media, la  desviación típica y la gráfica, para saber si se aproxima a la distribución normal. Con el Simulador se pueden preparar rápidamente distintas muestras para un trabajo por equipos. También  puede aprenderse en clase el funcionamiento de esta herramienta y que los grupos simulen su propia muestra.

Colesterol en sangre

Esta muestra ha sido generada mediante el Simulador:

221,0     205,9     208,2     224,8     205,3     209,7     220,8     229,7
202,8     215,2     203,6     240,7     215,8     236,4     234,6     213,6
189,0     212,7     197,4     203,2     175,4     218,4     227,6     222,4
246,2     238,8     211,5     229,4     206,4     195,8     179,4     206,3
220,4     234,2     207,5     184,7     204,5     224,4     220,2     199,3

Se puede intentar adivinar en clase qué media se ha usado, e investigar si estos datos entran en lo que es frecuente en la vida real.

Cociente intelectual

A la vista de esta tabla, se puede discutir qué media y desviación típica se usa y seguir investigando en Internet:

103        87          106        57          100
62          88          81          98          83
102        90          98          103        100
109        76          93          99          100
107        84          75          104        105
91          96          111        121        108
93          89          89          88          92
71          85          92          104        83
82          97          88          91          82
103        85          110        108        94
84          101        94          86          97
105        92          85          120        121






jueves, 31 de enero de 2019

Suma de cuadrados de cifras (4) -Números consecutivos con suma de cuadrados de cifras cuadrada en ambos


Llegamos a la cuarta entrega de la serie que venimos publicando sobre la suma de los cuadrados de las cifras de un número. Se inserta a continuación la dirección de la primera, y a partir de ella puedes ir leyendo las siguientes, que no son consecutivas, pues tienen intercalados otros temas:


http://hojaynumeros.blogspot.com/2018/11/suma-de-cuadrados-de-cifras-1-un.html

Números consecutivos con suma de cuadrados de cifras cuadrada en ambos

En el tema de la suma de cuadrados de las cifras. una cuestión curiosa es el descubrimiento de dos números consecutivos en los que ambos presenten sumas de cuadrados de cifras que también son cuadradas. Por ejemplo, 137209 y 137210 lo cumplen:

1^2+3^2+7^2+2^2+0^2+9^2=144=12^2
1^2+3^2+7^2+2^2+1^2+0^2=64=8^2

Usando la función SUMACIFRAS (ver entradas anteriores de esta serie) es fácil detectar estos pares de consecutivos, recorriendo todos y aplicando la suma de cuadrados de cifras a sus consecutivos. Así obtenemos la sucesión siguiente, formada por los elementos menores de cada par:


0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9999, 22449, 24249, 42249, 48889, 84889, 88489, 115609, 116509, 123709, 127309, 132709, 137209, 151609, 156109, 161509, 165109, 172309, 173209, 202449, 204249, 213709, 217309, 220449, 224049, 231709, 235509, 237109, 240249, 242049, 253509, 255309, 271309, 273109, 312709, 317209, 321709, 325509, 327109, 333609, 336309, 352509, 355209, 361999, 363309, 369969, 371209, 372109, 396969, 399669, 402249, 408889, …

Entre ellos están los de una cifra, que cumplen la condición trivialmente, y todos los demás terminan en 9.

Se puede razonar esa terminación en 9 para números de más de una cifra. La clave está en que la diferencia entre dos cuadrados es mayor o igual que 2N+1 si N es el menor del par. Si las unidades tuvieran otro valor, por ejemplo el 6, al incrementar esa cifra al 7 la diferencia de cuadrados sería de 2*6+1=13. La máxima diferencia entre los cuadrados de dos cifras consecutivas es de 2*9+1=19, pero eso no convertiría la suma total cuadrada en otra cuadrada mayor, pues al sumar los cuadrados de las cifras restantes se formaría un cuadrado mayor que el de la última cifra, que presentaría una diferencia mayor que la de la misma.

Ejemplos:

148 y 149 forman las sumas de cuadrados 1+16+64=81, 1+16+81=98. La diferencia es la prevista, 2*8+1=17, pero hemos elegido la primera para que forme el cuadrado 81, y su siguiente es 100, con una diferencia superior a 17.

Tomemos otro ejemplo, 488. La suma de cuadrados de cifras es 4^2+8^2+8^2=144. Si incrementamos el 8 al 9, la suma sería ahora de 4^2+8^2+9^2=161, con un incremento de 2*8+1=17, pero para pasar de 144 al siguiente cuadrado necesitamos 2*12+1=25, y nos faltan unidades.

Por tanto, la única cifra posible es 9, porque con ella se disminuye el cuadrado en lugar de aumentar, lo que no es posible, según hemos razonado.

Todos los elementos menores de estos pares terminarán en 9 si poseen varias cifras.

Si pasamos de un número terminado en 9 al siguiente, que lo hace en 0, se pierden 81 unidades en la suma de cuadrados de cifras (excluimos de este razonamiento el 9999, que es un caso especial). Esta pérdida se compensará con la ganancia que se produzca en las decenas. Sabemos que equivale a 2*k+1, luego la ganancia puede ser de 1, 3, 5, 7, 9, 11, 13, 15, 17 o 19, (según sean las decenas 0, 1, 2, 3,…,9), con lo que la pérdida equivaldrá a 80, 78, 76, 74, 72, 70,… Habría que investigar qué cuadrados presentan esa diferencia (no necesariamente consecutivos).

Se sabe que una diferencia de cuadrados, si es par,  ha de ser múltiplo de 4, luego las únicas diferencias válidas serían 80, 76, 72, 68 o 64, que se corresponden con las decenas 0, 2, 4, 6 y 8. Estas diferencias producen las siguientes diferencias de cuadrados (lo hemos calculado con una función adecuada):



Terminado en 09

La diferencia es 80 que equivale a tres diferencias de cuadrados, 9^2-1^2, 12^2-8^2 y 21^2-19^2

La primera sólo se da en el número 9, por razones evidentes

La diferencia entre 8^2 y 12^2 es la que más veces se presenta, como en 115609, 115610, en los que 1+1+25+36+0+81=144=12^2, 1+1+25+36+1=64=8^2

El par 19, 21 no aparece hasta números de siete cifras, así ocurre con 6999909 y 6999910:
36+81+81+81+81+0+81=441=21^2 y 36+81+81+81+81+0+1=361=19^2

Terminado en 29

Diferencia 76 que sólo se da en 20^2-18^2. Hay muy pocos casos. El primer ejemplo que hemos encontrado es 5889929 y 5889930.
25+64+64+81+81+4+81=400=20^2, 25+64+64+81+81+9+0=324=18^2

Otros ejemplos: 5898929, 5899829, 5988929, 5989829, 5998829 y 6699929

Terminado en 49

La diferencia es 72, que se da en 11^2-7^2 y 19^2-17^2

Se dan las dos diferencias:
7 y 11: 10231349 y 10231350, ya que 1+0+4+9+1+9+16+81=121=11^2, 1+0+4+9+1+9+25+0=49=7^2
19 y 17: 11689949 y 11689950: 1+1+36+64+81+81+16+81=361=19^2, 1+1+36+64+81+81+25+0=289=17^2

Terminado en 69

69 – Diferencia 68. Se da el 16,18, como era de esperar:

Uno de los primeros ejemplos es 396969 y 396970, con
9+81+36+81+36+81=324=18^2 y 9+81+36+81+49+0=256=16^2

Terminado en 89

La única diferencia es 64, en 17^2-15^2. No se da en los primeros ejemplos. Hay que buscar hasta más de un millón. El primero es 1156989 con 1156990, pues 1+1+25+36+81+64+81=289=17^2 y 1+1+25+36+81+81+0=225=15^2

Aunque la búsqueda ha resultado muy laboriosa, podemos afirmar que se dan todas las terminaciones posibles, 09, 29, 49, 69 y 89 y que los cuadrados resultantes tienen como valor máximo 400=20^2. Esto tiene un valor teórico importante, y es que las sucesión de números que estamos estudiando no tiene carácter infinito, pues está acotada por un número de 401 cifras, en el que todas las cifras fueran distintas de cero, por ejemplo,1111…(401…1111.

Si deseas experimentar por tu cuenta, puedes inspirarte en este código PARI, que está pensado para buscar terminaciones en 89 entre 1000000 y 3000000:

for(p=1000000, 3000000, a=norml2(digits(p)); b=norml2(digits(p+1)); if(issquare(a)&&issquare(b)&&p%100==89, print(p,", ",a,", ",b)))

Se han destacado en negrita los elementos que tendrías que cambiar.

lunes, 21 de enero de 2019

Suma por diferencia con añadido de una unidad



El día 29/10/18 publiqué en Twitter (@connumeros) la siguiente propiedad del número de fecha 291018:

291018 presenta dos productos muy parecidos basados en el número 540:
291018=(540-33)(540+34)
291018=(540-7)(540+6)

Es algo parecido a la diferencia de cuadrados (suma por diferencia) con el añadido de una unidad al sumando o al sustraendo. Pueden darse los dos casos, que representaremos por

N=(m+p)(m-p+1) o bien N=(m+p)(m-p-1)

Al primer caso le llamaremos C(-1), porque el sustraendo es una unidad menor que p, y al segundo C(+1).

Es fácil ver que N ha de ser par, pues si m y p son ambos pares o impares, su suma m+p será par, y si son de distinta paridad, lo es el otro factor. Al multiplicar siempre habrá un factor par, lo que convierte también en par el producto.

A la inversa, todo número par mayor que 2 (para evitar el valor 0) presenta dos soluciones triviales:

Todo número par n>2 cumple esta descomposición haciendo m=n/2+1 y p=n/2-1, pues entonces n=(n/2+1+n/2-1)(n/2+1-(n/2-1)-1)=n*1

También cumple esta otra: m=n/2, p=n/2, con n=(n/2+n/2)(n/2-n/2+1)=n*1

A partir de ahora eliminaremos estos dos casos, y sólo consideraremos el caso m-p>2.

Con esa restricción, el primer número que admite esta descomposición es el 10, si hacemos m=4 y p=1

10=(4+1)(4-2)=5*2

Será pues un caso del tipo C(+1).

Para saber si un número se puede descomponer de esta forma podemos usar la siguiente función:

Public Function sumapordif$(n) ‘Es de tipo string para contener soluciones
Dim m, p, a, k
Dim c$

c$ = "": k = 0 ‘c$ contiene soluciones y k las cuenta
For m = 2 To n - 1
For p = 1 To m – 3 ‘Respetamos una diferencia mayor que 2
a = 0
If n = (m + p) * (m - p - 1) Then a = 1 ‘Probamos las dos fórmulas
If n = (m + p) * (m - p + 1) Then a = -1
If a <> 0 Then k = k + 1: c$ = c$ + Str$(m) + Str$(p) + "#" + Str$(a)
‘Si alguna de las dos se verifica, se incorpora la solución y se incrementa el contador
Next p
Next m
If k > 0 Then c$ = Str$(k) + c$ ‘Se incorpora el contador a la solución
sumapordif = c$
End Function

Con ella podemos descubrir los primeros números pares que admiten solución:

10          1 4 1# 1
14          1 5 2# 1
18          2 5 1# 1 6 3# 1
20          1 4 1#-1
22          1 7 4# 1
24          1 6 2# 1
26          1 8 5# 1
28          2 5 2#-1 6 1# 1
30          3 5 1#-1 7 3# 1 9 6# 1
34          1 10 7# 1
36          3 6 3#-1 7 2# 1 8 4# 1
38          1 11 8# 1
40          2 6 2#-1 7 1# 1
42          3 6 1#-1 9 5# 1 12 9# 1
44          2 7 4#-1 8 3# 1
46          1 13 10# 1
48          1 10 6# 1
50          3 7 3#-1 8 2# 1 14 11# 1
52          2 8 5#-1 9 4# 1
54          4 7 2#-1 8 1# 1 11 7# 1 15 12# 1
56          1 7 1#-1
58          1 16 13# 1
60          5 8 4#-1 9 3# 1 9 6#-1 10 5# 1 12 8# 1

Para cada número figura en primer lugar el número de soluciones. Así, 60 presenta 5 soluciones. Después figuran los valores de m y p seguidos de # y de +1 o -1 según el tipo de solución.

Vemos que la solución para el 54 es 4 7 2#-1 8 1# 1 11 7# 1 15 12# 1. Eso significa que posee cuatro soluciones, una del tipo C(-1) y las otras del otro tipo.

En efecto, se cumple:


54=(7+2)(7-1)=(8+1)(8-2)=(11+7)(11-8)=(15+12)(15-13)


Soluciones dobles con el mismo valor de m

Un problema más difícil es el de determinar si un número, como el 291018 admite dos (o más) soluciones con el mismo valor de m. El algoritmo puede resultar algo complejo, por lo que hay que estudiarlo con atención. Para los valores de m usamos el rango desde 2 hasta la mitad del número, ya que m+p ha de ser divisor propio de n (si desechamos los casos triviales). Después, para cada valor de m contamos los casos favorables y, si son mayores que 1, los reservamos en la variable c$ para construir la función. Este es el listado:

Public Function sumapordifdup$(n)
Dim p, h, v, b, m, n2
Dim c$


If n Mod 2 <> 0 Then sumapordifdup = "": Exit Function ‘Desechamos los impares
n2 = n / 2 ‘n/2 es el tope para m
v = 0 ‘Contador de soluciones si procede
m = 2 ‘Inicio de m
c$ = "" ‘Contenedor de la solución
While m < n2 And v = 0 ‘Avanza hasta la mitad de n si no hay solución
p = 1: h = 0: c$ = "" ‘Se inician los valores para p
While p < m - 1 And v = 0
b = m + p ‘Se construye la suma m+p para ver si es divisor
If n Mod b = 0 Then ‘Si es divisor, se prueban las dos posibilidades
If n = b * (m - p - 1) Or n = b * (m - p + 1) Then c$ = c$ + Str$(m) + Str$(p): h = h + 1
‘La línea anterior es fundamental, porque cuenta soluciones para un mismo valor de m
End If
p = p + 1
Wend
If h > 1 Then v = h ‘Si hay más de una solución, se para el proceso
m = m + 1
Wend
If v>0 then sumapordifdup$ = c$ else sumapordifdup$ = “”
End Function

Aplicada esta función a nuestro valor 291018 se obtiene:




Coincide con el planteamiento inicial de esta entrada.

Esta función no nos informa sobre si el tipo es C+1 o C-1, pero es que se ha querido simplificar. Después de obtenida la solución se puede efectuar una comprobación manual.

Con esta función podemos obtener los primeros números que satisfacen una relación doble como la solicitada:

N            Valores de m (duplicado) y p

36          7 2 7 5
60          9 3 9 6
70          9 1 9 5
90          11 4 11 7
126        12 2 12 6
168        15 6 15 9
180        14 1 14 6
198        15 3 15 7
216        17 7 17 10
270        19 8 19 11
286        18 4 18 8
300        18 2 18 7
330        21 9 21 12
378        20 1 20 7
390        21 5 21 9
396        23 10 23 13
450        22 3 22 8
468        25 11 25 14

Por ejemplo, 330=(21+9)(21-10)=(21+12)(21-11) Posee, pues, las dos soluciones pedidas para el valor 21, que era lo exigido.

Vemos que existen muchos ejemplos de una propiedad que parecía más restrictiva, pero este tipo de hechos no se descubren hasta no emprender el estudio.

Si descomponemos estos números en factores primos, observaremos que poseen más de cuatro divisores, lo que propicia que se dé la casualidad que estamos comentando:





miércoles, 9 de enero de 2019

Número igual al cubo de la suma de sus cifras



Hace unas semanas, ordenando mis papeles, encontré una hoja de hace casi cuarenta años en la que resumía un ejercicio para la calculadora programable Texas Instrument TI-58. Me impresionó recordar lo complicado que era su lenguaje de programación y las dificultades que tuvimos que soportar quienes iniciamos el uso de la Informática en las aulas. Por ello, he querido, a través de mi propia persona, rendir homenaje al profesorado que dio esos primeros pasos.

Resulta que lo que yo estaba buscando en esa hoja eran los números de Dudeney (no puedo recordar si en aquellos años los conocía por este nombre, creo que sí), aquellos que coinciden con el cubo de la suma de sus cifras, como 4913=(4+9+1+3)3. Yo lo expresaba de distinta forma, como vemos en mi manuscrito escaneado:

Se expresa en él la búsqueda de números cuya raíz cúbica coincide con la suma de sus cifras. Es preferible la formulación de más arriba, que evita el uso de la raíz, con toda la complicación de su expresión decimal.

En este manuscrito se incluía también un diagrama de flujo, que ahora, con la programación estructurada y la orientada a objetos, ha quedado como algo antiguo, pero que en su momento nos ayudó mucho a razonar. En él se evita el uso de la raíz cúbica.


La falta de costumbre me ha obligado a estudiar este esquema con detenimiento, lo que aumenta mi asombro al recordar la precariedad de medios de entonces. Y peor era su traducción al lenguaje propio de la TI-58, muy próximo al ensamblador. Véase una muestra:


¿Cómo abordaríamos este problema pasadas cuatro décadas?

En el caso de este blog acudiríamos a Excel o Calc, con su lenguaje Basic, o al lenguaje PARI, que se nos ha hecho imprescindible.


  
Uso de la función SUMACIFRAS

En este curso hemos usado con frecuencia la suma de cifras de un número, pero para evitar la consulta a otras entradas, reproduzco de nuevo aquí la función usada. Se aplica a dos argumentos, el número n y el exponente k al que se elevan las cifras en la suma:

Public Function sumacifras(n, k)
Dim h, i, s, m

h = n ‘Copia el valor de n
s = 0 ‘Variable que contendrá la suma
While h > 9 ‘Se extraen cifras hasta que sólo quede una
i = Int(h / 10) ‘Dos líneas para extraer la siguiente cifra
m = h - i * 10
h = i ‘El valor de h va descendiendo al extraerle cifras
s = s + m ^ k ‘Se incrementa la suma
Wend
s = s + h ^ k ‘Última cifra
sumacifras = s
End Function

En esta entrada sólo usaremos exponente 1, por lo que las llamadas a la función serán del tipo sumacifras(n;1)

Con esta función se puede organizar la búsqueda de los números de Dudeney:

For i = 1 To 100
b = i ^ 3
If sumacifras(b, 1) = i Then msgbox(b)
Next i

Con un código algo más preciso, se puede construir la tabla:


En ella quedan destacadas las igualdades entre la raíz cúbica y la suma de cifras. No hay más soluciones, como demostraremos más adelante. Estos números están publicados en blogs y páginas de Matemáticas, y en especial en 

A061209         Numbers which are the cubes of their digit sum.                
0, 1, 512, 4913, 5832, 17576, 19683

Llama la atención la simplicidad del código en PARI:

(PARI) for(n=0, 999999, sumdigits(n)^3==n&&print1(n", ")) \\ M. F. Hasler, Apr 12 2015

¿Por qué interrumpimos la búsqueda en las seis cifras? Esto lo razoné hace cuarenta años, cuando me iniciaba en la programación con números enteros. 

Copio y adapto mi razonamiento:

En un número n de k cifras, la suma de las mismas S es como máximo 9+9+9+…+9 k veces, luego S<10k. Por otra parte, n estará comprendido entre 10(k-1) y 10k. Si el número tiene más de seis cifras tendremos que su raíz cúbica cumplirá R>=10(k-1)/3 y (k-1)/3>2k. 

Será imposible que S=R, ya que S<10k<102k<R

La desigualdad central se ve mejor con logaritmos decimales:

10k<102k equivale a 1+log(k)<2k, en el que 1<k y log(k)<k, luego la desigualdad se cumple.

Esta es la razón por la que es inútil buscar más números de Dudeney.

Una vez resuelto el problema con la potencia tres, es sencillo extenderlo a las siguientes potencias. Lo dejamos como ejercicio. Por cierto, para cuadrados sólo existen dos soluciones, 1 y 81.

Las soluciones con cuartas potencias son
1             1
7             2401
22          234256
25          390625
28          614656
36          1679616
              
Las tienes publicadas en http://oeis.org/A061210, y se puede demostrar que no existen soluciones con más de ocho cifras.

Con quintas potencias son estas:

1             1
28          17210368
35          52521875
36          60466176
46          205962976



Caso general

En http://oeis.org/A023106 están publicados todos aquellos números que son potencia de la suma de sus cifras, sin especificar el exponente:

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 81, 512, 2401, 4913, 5832, 17576, 19683, 234256, 390625, 614656, 1679616, 17210368, 34012224, 52521875, 60466176, 205962976, 612220032, 8303765625, 10460353203, 24794911296, 27512614111, 52523350144, 68719476736,…

Podemos reproducir esta lista, no considerando los de una cifra,  que son casos particulares (exponente 1). Basta usar esta función, que para cada número te devuelve “NO” si no tiene la propiedad exigida, y la suma de cifras y el exponente si la tiene:

Public Function tipodudeney(n) As String
Dim p$
Dim i, j, s, t

p$ = "" ‘Resultado, en principio vacío
For i = 2 To Sqr(n) ‘Recorremos posibles raíces enésimas de n
s = Int(Log(n) / Log(i) + 0.000001) ‘Evaluamos el posible exponente entero
If n = i ^ s Then ‘Si efectivamente, es raíz enésima, sumamos cifras
t = sumacifras(n, 1)
If t = i Then p$ = p$ + Str(i) + " " + Str(s) + "  " ‘Si existe coincidencia, añadimos solución
End If
Next i
If p = "" Then p = "NO" ‘No existe solución
tipodudeney = p$ ‘Se publica raíz y exponente
End Function

Con un poco de paciencia, porque en Excel va lento (y en Calc más), logramos las primeras soluciones. Estas son las inferiores a 500000:



Entre ellas figuran exponentes 2, 3 y 4, con soluciones ya conocidas.

Dejamos aquí el estudio. Ha sido interesante revisar uno de mis primeros trabajos en programación. Si encuentro otro, lo adaptaré también.