lunes, 20 de febrero de 2017

Productos cartesianos condicionados con Cartesius (1) - Variaciones


Iniciamos una serie de entradas que estará basada en “Cartesius”, una herramienta implementada en hoja de cálculo para construir productos cartesianos condicionados, no sólo las clásicas Variaciones, Combinaciones y Permutaciones, sino otros más complejos, como particiones de un número o arreglos que cumplan condiciones específicas, como que el segundo elemento sea promedio de los dos primeros.

Introducción a Cartesius

Esta herramienta la puedes descargar desde

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

Está implementada en Excel y LibreOffice Calc, con una fiabilidad bastante aceptable, aunque quizás necesite ligeros retoques.

Actúa sobre conjuntos numéricos (hasta doce de ellos), iguales o diferentes, que ocupan cada uno una columna. Por ejemplo, en la imagen se van a combinar dos conjuntos de números pares con otro de números primos:


Sobre ellos se construirá un producto cartesiano que, si no se añaden condiciones, estará formado en este caso por 216 arreglos de tres elementos cada uno. Aquí tienes los doce primeros, que seguirían hasta un total de 216:



Este proceso no tiene interés si no se añaden algunas condiciones. Existen gran variedad de ellas en Cartesius. Las básicas definen los conjuntos y las demás condicionan el producto cartesiano.

Por ejemplo, sobre los conjuntos de arriba se puede exigir que la suma de los elementos sea 17. Esto se consigue en la columna de condiciones, que será el objetivo principal de estas instrucciones previas:



En este ejemplo se construyen los conjuntos, se impone además que la suma sea igual a 17, y se exige, por simplificación, que los elementos estén ordenados en orden creciente. Más adelante explicaremos la sintaxis de cada tipo de condición. Con estas conseguiríamos tres soluciones:


Este es en esencia el trabajo de esta herramienta: la construcción de productos cartesianos de conjuntos numéricos y su posterior condicionamiento. En esta serie de entradas te iremos dando la explicación necesaria para cada ejemplo, remitiéndote, para un estudio más sistemático, a la Instrucciones de uso de la herramienta, que puedes descargar desde la dirección

http://www.hojamat.es/sindecimales/combinatoria/herramientas/cartesius.pdf



Productos cartesianos condicionados

Antes de construir los primeros arreglos con Cartesius (en esta entrada serán variaciones), recordamos conceptos:

Producto cartesiano

El producto cartesiano de dos conjuntos A y B es otro conjunto cuyos elementos son todos los pares posibles formados por un elemento de A y otro de B en ese orden. Se representa como A×B


Imaginemos ahora productos cartesianos de un conjunto consigo mismo o con otros, pero que puede contener varios factores. Por ejemplo, este es el producto cartesiano A×A×A siendo A={1,2}


Una definición alternativa de producto cartesiano es el conjunto de formas de elección de un elemento de cada conjunto de los que forman el producto. Estos son los conjuntos básicos sobre los que trabajaremos. Por efectividad, sólo se estudiarán conjuntos de números naturales. Si ahora les imponemos condiciones (más adelante aprenderás cómo), obtendremos, por ejemplo, combinaciones con repetición, ya estudiadas en Combinatoria:


Con otro tipo de condiciones podemos también obtener particiones de un número en sumas. Aquí tienes las particiones del número 11 en sumas de impares:


A lo largo de varias entradas aprenderemos el manejo de la hoja Cartesius mediante ejemplos, independientemente de la lectura directa de las Instrucciones de uso. Comenzaremos con la aplicación de esta herramienta a los problemas clásicos de la Combinatoria.



Recorrido por los problemas

Dedicaremos varias entradas a los arreglos básicos de la Combinatoria, pero a cada uno le añadiremos condiciones que no suelen figurar en los libros de texto. Simultáneamente nos iremos familiarizando con los formatos de las condiciones en Cartesius.

Variaciones con repetición

Recordamos que un producto cartesiano es el conjunto de formas de elección de un elemento de cada conjunto de los que forman el producto. Así, del conjunto {1, 2, 3} multiplicado por sí mismo tres veces obtendríamos este producto cartesiano:



Hay 27 formas de elegir un elemento de cada conjunto factor. Coincide con 3^3=27. En general, si el conjunto posee m elementos y lo tomamos n veces, el número de elementos del producto cartesiano sería

Esta fórmula la conocemos desde la Enseñanza Media, y es la correspondiente a las variaciones con repetición. En efecto, la operación básica de Cartesius es formar estas variaciones, a las que también podríamos nombrar como producto cartesiano sin condicionar. Si después imponemos condiciones, obtendremos combinaciones, permutaciones, particiones, y otros subconjuntos del producto cartesiano que no reciben nombre, como sumas de cuadrados con total dado, descomposición de un número en suma de triangulares y otros similares que iremos viendo.

Al ser la operación más sencilla, se obtiene escribiendo sólo dos condiciones. Por ejemplo, para formar las variaciones con repetición del conjunto {1,2,3,4} tomadas de 3 en 3 bastarían estas:

XTOTAL=3
XT=1..4

No necesita más, pues si no le indicamos nada, repite y tiene en cuenta el orden (producto cartesiano) Es el arreglo básico en Cartesius.

Tu primer arreglo de números

Abre Cartesius. Busca su primera hoja Planteamiento. Si contiene datos, puedes usar los botones Borrar condiciones y Borrar datos, para verlo todo limpio. Escribe después en la zona de condiciones, celda N10, la condición XTOTAL=3. Significa que el conjunto que vas a definir lo combinarás consigo mismo en un producto cartesiano de tres factores. El TOTAL se refiere al número de columnas que se rellenarán.

En una celda más abajo, la N11, escribe: XT=1..4. Esto significa que trabajarás en todas las columnas con los números que van del 1 al 4.



Si ahora pulsas el botón Iniciar, se pasará automáticamente a la hoja Producto y verás el desarrollo de las 64 variaciones obtenidas (4^3). Aquí tienes las primeras:


Si vuelves a la hoja Planteamiento observarás que las columnas se han rellenado según tus deseos:



Aunque sea adelantar información, añade otra condición, XT=ETIQ(PRIMO), y tus datos cambiarán a los cuatro primeros números primos después de pulsar Iniciar.



Las variaciones seguirían siendo 64, porque no hemos condicionado el producto cartesiano, sólo los datos.

Por tanto, identificaremos las variaciones con repetición con los productos cartesianos sin condicionar. Prueba a simular la tirada simultánea de tres dados y verifica que obtienes 216 elementos en el producto cartesiano, porque las tiradas de cada dados se pueden repetir. Sólo tienes que definir XTOTAL=3 y XT=1..6. Inténtalo.

Variaciones sin repetición

No siempre deseamos elegir un elemento de cada conjunto con repetición. Podemos desear elegir elementos distintos, como ocurriría en la extracción de 3 bolas de colores de una bolsa, sin reponerlas una vez extraídas. Como Cartesius sólo maneja números, las podremos representar como 1, 2 y 3. El planteamiento podría ser:

XTOTAL=3
XT=1,2,3
NO REPITE

Aquí hemos cambiado la definición del conjunto: en lugar de usar XT=1..3, lo hemos definido como conjunto de elementos, como XT=1,2,3. Es una variante. Además, se ha añadido la condición NO REPITE, que no necesita explicación. No olvides borrar antes las condiciones si has estado trabajando con ellas.

Pulsamos el botón de Iniciar y obtenemos



Ya habrás identificado estos arreglos como variaciones sin repetición y comprendido que son 6 porque 6=3*2*1, según la conocida fórmula

Vm,n = m(m-1)(m-2)…(m-n+1)

Imagina que deseamos encontrar todas las variaciones de 6 elementos tomados de 4 en 4 en las que el segundo elemento sea un 2. Acudiríamos a este planteamiento:

XTOTAL=4
XT=1..6
X2=2..2

Con este ejemplo aprenderás una característica importante de Cartesius, y es que una condición puede anular parte de las anteriores. En XT=1..6 obligábamos a que todos los elementos recorrieran del 1 al 6, pero después hemos añadido algo contradictorio, que X2 (el segundo) sólo pueda pertenecer a 2..2. Pues bien, esta es la condición que prevalece (en pantalla pueden seguir apareciendo 3, 4, 5, 6, pero no tendrán validez).

Borra las condiciones, escribe estas nuevas y observarás que obtienes, en lugar de 1296=6^4, 216=6^3, ya que el segundo elemento permanece constante. Si no deseas ver los elementos, sino sólo el número de arreglos, en la hoja Producto puedes acudir a los controles y especificar que no quieres ver el desarrollo:



De esa forma los cálculos serán mucho más rápidos, pero sólo figurará el número total 216 arriba a la derecha del conjunto:



Podías haber escrito estas otras condiciones:

XTOTAL=4
X1=1..6
X2=2..2
X3=1..6
X4=1..6

Ya te habrás dado cuenta de que XT define para todos y X1, X2,… para cada uno en particular.

Importante: El programa se puede confundir si encuentra una celda con un espacio en blanco en lugar de estar vacía. Por eso, es conveniente borrar las condiciones antes de escribir las nuevas.

En la siguiente entrada procederemos a incluir diversos condicionamientos a las variaciones, con lo que adquirirás más dominio de la hoja Cartesius.


jueves, 9 de febrero de 2017

Divisores de los números 3-friables


En la entrada anterior presentamos los números 3-friables, que son aquellos que sólo tienen como factores primos el 2 y/o el 3, con expresión 2^p*3^q. Conviene leerla previamente para entender lo que sigue. Puedes pulsar el enlace "Entrada antigua" al final de esta entrada.

Las funciones dependientes de divisores serán en este caso muy simples, ya que sólo manejaremos los exponentes de 2 y 3. Vemos algunas:

Número de divisores (función TAU)

Nos basaremos en la expresión general de estos números, sea


Consultamos nuestra publicación sobre funciones multiplicativas (http://www.hojamat.es/publicaciones/multifun.pdf) y vemos que TAU se expresa respecto a los exponentes como

En este caso D(N)=(1+p)(1+q). Por tanto, nunca tendrán un número de divisores primo si son múltiplos de ambos 2 y 3, pero sí pueden serlo si sólo son múltiplos de uno de ellos. En otros casos podrá ser semiprimo el número de divisores, como en el caso 2^2*3^6 cuyo número de divisores es 3*7, semiprimo.

También se puede dar la casualidad, al tener pocos factores, de que el número 3-friable sea múltiplo de TAU. Pues bien, resultan muchos números con esta propiedad. Los primeros son:

1, 2, 8, 9, 12, 18, 24, 36, 72, 96, 108, 128, 288, 384, 864, 972, 1152, 1944, 3456, 6144, 6561, 6912, 7776, 13122, 18432, 26244, 31104, 32768, 52488, 55296, 62208, 69984, 98304,...

Los puedes conseguir con PARI:

m23(n)={local(m,v);m=n;while(m/2==m\2,m=m/2);while(m/3==m\3,m=m/3);if(m==1,v=1,v=0);v}
for(i=1,10^5,if(m23(i)&&i%sigma(i,0)==0,print1(i,", ")))


Función SIGMA

La función SIGMA suma todos los divisores de un número, al igual que la anterior los cuenta. Su expresión es

Es fácilmente adaptable a nuestro caso. Sería así:

Por ejemplo, el elemento 384=2^7*3 tendrá (1+7)(1+1)=16 divisores. En efecto, son estos: 384, 192, 128, 96, 64, 48, 32, 24, 16, 12, 8, 6, 4, 3, 2, 1. Su suma, la función SIGMA, tendrá el valor (2^8-1)(3^2-1)/2=255*4=1020, como puedes comprobar sumando los 16 divisores.

¿Puede ser prima la sigma de estos números?

Para ello, uno de los factores debería ser primo, y el otro la unidad. Si observas los paréntesis de la fórmula de arriba, sólo valdrán 1 si p=0 o q=0. Sólo pueden tener sigma prima aquellos elementos que sólo sean múltiplos de 2 o de 3. En concreto son los siguientes:

2, 4, 9, 16, 64, 729, 4096, 65536, 262144,…

Los puedes conseguir con este algoritmo en PARI

m23(n)={local(m,v);m=n;while(m/2==m\2,m=m/2);while(m/3==m\3,m=m/3);if(m==1,v=1,v=0);v}
for(i=1,300000,a=m23(i);if(a&&isprime(sigma(i)),print1(i,", ")))


Vemos que aparecen números de la forma 2^p, como 2, 4, 16, 64, 4096, y otros del tipo 3^q, que serían 9 y 729. Los vemos por separado:

Los elementos del tipo 2^p serán aquellos en los que 2^(p+1)-1 sea primo, pero esos son los  primos de Mersenne: 3, 7, 31, 127, 8191,…, por lo que serán los únicos casos posibles, según la tabla siguiente:



Aquí tienes la lista de los primeros casos del tipo 2^p:

2, 4, 16, 64, 4096, 65536, 262144, 1073741824, 1152921504606846976, 309485009821345068724781056, 81129638414606681695789005144064, 85070591730234615865843651857942052864,…

Es fácil ver que en esta tabla sigma(sigma(n))=2n. En efecto, los primeros de la tabla son fácilmente comprobables: sigma(sigma(4))=sigma(7)=7+1=2*4,…Mediante cálculos tendríamos que

sigma(sigma(2^p))=sigma(2^(p+1)-1)=2^(p+1)-1+1,

por ser prima la sigma, luego

Sigma(sigma(2^p))=2^(p+1)=2*2^p

Por tener esta propiedad, a estos números se les llama superperfectos, y están publicados en http://oeis.org/A019279

Los del tipo 3^q tendrán sigma prima si (3^(q+1)-1)/2 es primo, lo que obliga a que q sea par, como ocurre en los casos vistos de 9=3^2 y 729=3^6 y podemos añadir 3^12=531441. Esta es la lista de los primeros:

9, 729, 531441, 2503155504993241601315571986085849, 4638397686588101979328150167890591454318967698009,…

Están publicados en http://oeis.org/A255510


¿Podría ser semiprima?

La sigma de los números 3-friables también puede ser semiprima. Basta exigir en los algoritmos que bigomega(N) sea igual a 2, si recordamos que BIGOMEGA cuenta los factores primos con repetición. Si unimos las funciones solo23 (o m23 en PARI) con bigomega obtendremos las soluciones. En la tabla puedes estudiar los primeros ejemplos, obtenidos con hoja de cálculo




La primera columna contiene los números (3-friables), la segunda su sigma y la última los dos factores de la misma que la convierten en semiprima.

Podemos ampliar la lista usando PARI:

m23(n)={local(m,v);m=n;while(m/2==m\2,m=m/2);while(m/3==m\3,m=m/3);if(m==1,v=1,v=0);v}
for(i=2,10^11,if(m23(i)&&bigomega(sigma(i))==2,print1(i,", ")))

Obtendremos:

3, 8, 18, 36, 81, 144, 256, 576, 1024, 1458, 2916, 6561, 11664, 36864, 46656, 59049, 589824, 1062882, 2125764, 2359296, 2985984, 4194304, 8503056, 34012224, 43046721, 47775744, 191102976, 387420489, 2176782336, 9663676416, 31381059609, 34828517376, 68719476736, 139314069504,…

Este algoritmo es muy lento, por lo que podemos usar la idea del producto cartesiano que desarrollamos en la anterior entrada. Sólo hay que ordenar al final la lista que creemos término a término. Quedaría así:


l=List();for(i=0,40,for(j=0,25,a=2^i*3^j;if(bigomega(sigma(a))==2,listput(l,a))));listsort(l);print(l)

Nos da más términos de una forma muy rápida:

3, 8, 18, 36, 81, 144, 256, 576, 1024, 1458, 2916, 6561, 11664, 36864, 46656, 59049, 589824, 1062882, 2125764, 2359296, 2985984, 4194304, 8503056, 34012224, 43046721, 47775744, 191102976, 387420489, 2176782336, 9663676416, 31381059609, 34828517376, 68719476736, 139314069504, 782757789696, 1099511627776, 570630428688384,…

Y los que son sólo potencias de 2

8, 256, 1024, 4194304, 68719476736, 1099511627776, 281474976710656, 288230376151711744, 73786976294838206464, 4835703278458516698824704, 79228162514264337593543950336, 1267650600228229401496703205376, 5070602400912917605986812821504, 324518553658426726783156020576256,

Se encuentran fácilmente con PARI:

for(n=1,120,a=2^n;if(bigomega(sigma(a))==2,print1(a,", ")))

Se corresponden con los exponentes 3, 8, 10, 22, 36, 40, ,48, 58, 66, 82, 96, 100, 102, 108,…


Indicatriz de Euler

Para estos números N es muy fácil obtener la indicatriz, número de números coprimos con N y menores que él. Disponemos de una fórmula sencilla, publicada en muchos medios

En este caso:

j(N)=j(2^p*3^q)=2^p*3^q*(1-1/2)(1-1/3)=2^p*3^(q-1)

Existen relaciones muy sencillas en este caso entre N y j(N)

(a) Si q>0 y p>0 , la indicatriz es un tercio del número, como es fácil de ver por su expresión.

(b) Si q=0 tenemos que usar j(N)=j(2^p)=2^p*(1-1/2)=2^(p-1) y sería la mitad.

(c) Si p=0 tenemos j(N)=j(3^q)=3^q*(1-1/3)=3^(q-1)*2 y equivaldría a los dos tercios de N.

En la siguiente tabla lo puedes comprobar: los cocientes entre N y su Indicatriz siempre son 3, 2 o 1,5, según si son potencias dobles de 2 y 3 o sólo de 2 o sólo de 3:


Consecuencia importante: La indicatriz de un número 3-friable es también 3-friable.

Las propiedades que hemos estudiado se pueden unificar en una sola fórmula:

j(6N)=2N
Recorremos los casos:

Si q>0 y p>0 , 6N=2^(p+1)*3^(q+1), luego la indicatriz valdrá un tercio, es decir 2^(p+1)*3^q, que equivale a 2N

Si q=0, 6N=2^(p+1)*3, y la indictariz también será un tercio, es decir 2^(p+1)=2N

Si p=0, 6N=2*3^(q+1). La indicatriz vuelve a ser un tercio, y queda 2*3^q=2N

Divisores unitarios

Un divisor k de N es unitario si es primo con el cociente N/k, que por tanto también sería unitario. Los unitarios forman pares, comenzando con (N,1). Es sencillo razonar que en los números 3-friables 2^p*3^q con p>0 y q>0 sólo existirá otro par, el (2^p,3^q). Por tanto, la función USIGMA, suma de unitarios, valdrá en este caso

Usigma(n)=2^p*3^q+2^p+3^q+1=(2^p+1)(3^q+1).

Podemos interpretarlo como que se incrementan en una unidad las componentes 2^p y 3^q y después se multiplican, siempre que p>0 y q>0. Hemos construido una tabla en la que se confirma que usigma es igual a ese producto.



lunes, 30 de enero de 2017

Números 3-friables


Estudiaremos en esta entrada y la siguiente los números que sólo poseen como factores primos el 2 y el 3. De nuevo nos inspiramos en una sucesión de OEIS. Esta vez en la A003586 (http://oeis.org/A003586), que presenta los que llama “3-smooth numbers”, que se puede traducir como “liso o alisado (o regular) de grado 3”. En francés se les denomina 3-friables, y en nuestro idioma “friable” equivale a “fácilmente desmenuzable”. Si alguien conoce otra  denominación española puede comunicármelo. Mientras tanto, utilizaré una denominación similar a la francesa. Hendrik Lenstra les llama armónicos, en recuerdo de un texto de Phillipe de Vitry, obispo de Meaux, compositor del siglo XIV.

Me quedaré con la nomenclatura francesa: Un número es B-friable si todos sus factores primos son menores o iguales a B. En nuestro caso los números que estudiaremos son 3-friables. En este blog no nos son desconocidos, porque vimos en una entrada de hace unas semanas que los máximos productos de sumandos en las particiones de un número eran de este tipo (ver http://hojaynumeros.blogspot.com.es/2016/11/maximo-producto-en-la-particion-de-un_23.html)

Simplemente son números cuyos únicos factores primos son el 2 o el 3 (o ambos), es decir, que tienen la forma N=2^i*3^j con i,j³0.

Los primeros son estos:

1, 2, 3, 4, 6, 8, 9, 12, 16, 18, 24, 27, 32, 36, 48, 54, 64, 72, 81, 96, 108, 128, 144, 162, 192, 216, 243, 256, 288, 324, 384, 432, 486,…

Es fácil ver que desde el 1=2^0*3^0 hasta el final, todos tienen como únicos factores primos el 2 y/o el 3.

Existe una prueba muy sencilla para averiguar si un número es de este tipo. Consiste en dividir entre 2 y entre 3 mientras sea posible, es decir, mientras el número y los cocientes sucesivos sean múltiplos de uno de los dos. Si al final del proceso nos queda un 1, es que los únicos factores son 2 y 3, como se pide. Lo podemos concretar mediante la función solo23, que devuelve VERDADERO o FALSO. Adjuntamos la versión para el Basic de hojas de cálculo:

Public Function solo23(n) As Boolean
Dim m
m = n ‘m representa los cocientes sucesivos
While m Mod 2 = 0: m = m / 2: Wend ‘Divide entre 2 mientras se pueda
While m Mod 3 = 0: m = m / 3: Wend ‘Hace lo mismo con el 3
If m = 1 Then solo23 = True Else solo23 = False ‘Si al final queda un 1, es de ese tipo
End Function

La siguiente tabla aparece en la hoja con bastante rapidez:



La versión en PARI puede ser esta:

m23(n)={local(m,v);m=n;while(m/2==m\2,m=m/2);while(m/3==m\3,m=m/3);if(m==1,v=1,v=0);v}
for(i=1,300,a=m23(i);if(a,print1(i,", ")))

Es idéntica a la anterior, pero con otras reglas de sintaxis.

Esta misma idea puede servir para descomponer un número 3-friable en sus dos componentes 2^p y 3^q. Insertamos las funciones COMP2 Y COMP3 que no necesitan explicación:

Public Function comp2(n)
Dim m
m = n
While m Mod 3 = 0: m = m / 3: Wend 'Divide entre 3 mientras se pueda
comp2 = m
End Function

Public Function comp3(n)
Dim m
m = n
While m Mod 2 = 0: m = m / 2: Wend 'Divide entre 2 mientras se pueda
comp3 = m
End Function

En la siguiente tabla se han descompuesto los primeros números 3-friables:



Generación recursiva

Es tentador generar nuevos términos si se conocen los anteriores. Se puede lograr siguiendo algunas ideas sugeridas en la sucesión A003586 ( Hai He y Gilbert Traub, Dec 28 2004 ). El procedimiento se basa en que las potencias de 2 aparecen con más frecuencia que las de 3. Usamos estas potencias 3^q como indicadores del progreso de creación: mientras se pueda, se añaden factores 2 a los términos anteriores, y cuando ya sea imposible, se aumenta el exponente del 3 y se toma como nuevo término.

Dada una potencia de 3 cualquiera, 3^q, que sea término de la sucesión:

(1) Se prueba a multiplicar por 2 todos los términos anteriores que den lugar así a términos nuevos
(2) Si se agotan las multiplicaciones por 2 (al sobrepasar 3^q), se pasa a 3^(q+1) y se vuelve al paso 1.


 El problema de este procedimiento es que para multiplicar por 2 quizás debamos retroceder bastante en la sucesión, con lo que habría que definir variables locales que almacenaran los términos, con ocupación de memoria y la ignorancia previa de qué dimensión darles. Para resolverlo usaremos la primera columna de una hoja de cálculo. Definiremos como u(k) el valor de la celda k de la primera columna, y usaremos una subrutina es_u(k,v) para escribir el valor v en esa celda k. Lo escribimos para Excel:

Public Function u(i)
u = ActiveWorkbook.Sheets(1).Cells(i, 1).Value ‘la variable u(i) representa la celda i
End Function

Sub es_u(i, a)
ActiveWorkbook.Sheets(1).Cells(i, 1).Value = a ‘esta rutina lee el valor de la celda i
End Sub

Con la ayuda de estas dos rutinas, podemos ya presentar el algoritmo completo:

Sub engendram23()
Dim k, j, n

Call es_u(1, 1) ‘rellena con un 1 la primera celda de la columna 1
k = 1 ‘la variable k lleva la cuenta de los términos engendrados
j = 1 ‘la variable j lleva la cuenta de los exponentes del 3
For n = 1 To 100 ‘así se generan 100 términos. Lo podemos cambiar.
k = k + 1 ‘se busca un nuevo elemento
If 2 * u(k - j) < 3 ^ j Then ‘se retrocede para multiplicar por 2
Call es_u(k, 2 * u(k - j)) ‘si no se llega a la potencia 3^j, se almacena un nuevo término
Else
Call es_u(k, 3 ^ j): j = j + 1 ‘si ya no es posible multiplicar por 2, se almacena 3^j y se incrementa
End if
Next n
End Sub

Aquí tienes el resultado de los primeros, ordenado por filas:




¿Por qué no un producto cartesiano?

Los anteriores cálculos se han introducido para que los números 3-friables aparezcan ordenados, pero si renunciamos a ese detalle, se pueden generar sencillamente con un producto cartesiano entre el conjunto de las potencias de 2 y el de 3. Si trabajamos con hoja de cálculo podemos posteriormente ordenar la columna que los contiene.

Así hemos procedido acudiendo a nuestra hoja Cartesius, de pronta publicación. Hemos definido dos conjuntos de potencias (2 y 3) que hemos combinado formando un producto cartesiano, indicando a la hoja que nos presente el producto de cada par. Las instrucciones han sido estas:



Se adivina que se han definido dos conjuntos, uno de potencias de 2 a partir de 1 (de ahí el n-1) y otro de potencias de 3. A los pares que resultan se les ha convertido en producto, creando así una columna desordenada de números del tipo 2^p*3^q. Después sólo queda copiar esa columna en otra hoja y proceder a ordenarla. De esa forma dispondremos de (en este caso 1000) los números 3-friables hasta donde deseemos.

En esta captura de pantalla puedes ver algunos de ocho cifras:




jueves, 19 de enero de 2017

Número de descomposiciones en diferencia de cuadrados


Después de jugar bastante con los números naturales, he observado la disparidad existente entre ellos respecto al número de sus descomposiciones en diferencias de cuadrados. Nos referimos al número de soluciones de

N=a^2-b^2 con a y b enteros y a>0 y b>=0 para un N dado.

Hay números que no admiten ninguna descomposición de este tipo, como el 22, y otros que admiten muchas. Un ejemplo es el 1680, que admite doce:

1680=421^2-419^2=212^2-208^2=143^2-137^2=109^2-101^2=89^2-79^2=
=76^2-64^2=67^2-53^2=52^2-32^2=47^2-23^2=44^2-16^2=43^2-13^2=41^2-1^2

En la tabla lo puedes comprobar:



¿De qué depende esto? Lo iremos viendo más adelante.

Obtención del número de descomposiciones

Al igual que hemos procedido con otros temas, comenzaremos encontrando las soluciones sin apoyo de la teoría, para más adelante fundamentarlo y después extraer propiedades y curiosidades.

Cualquier algoritmo para resolver esta cuestión se puede basar en el hecho de que una descomposición de este tipo equivale a expresar N mediante un producto de factores con la misma paridad, ambos pares o ambos impares. En efecto, si N=b^2-a^2 resultaría N=(a+b)(a-b), y ambos factores tienen la misma paridad, como se comprueba estudiando los cuatro casos posibles para a y b: par-par, par-impar, impar-par e impar-impar. Es fácil. A la inversa: si N=m*n, ambos de la misma paridad resultaría que (m+n)/2 y (m-n)/2 serían enteros, cumpliéndose que N=((m+n)/2)^2-((m-n)/2)^2

El número de descomposiciones de N en diferencia de cuadrados coincide con el de productos con factores de la misma paridad y resultado N.

Para hacer más fáciles los trabajos, admitiremos que b pueda ser nulo, o de forma equivalente, que los dos factores sean iguales.

Establecida esta propiedad, la búsqueda se efectuaría encontrando divisores d de N tales que d y N/d tengan la misma paridad. Esto lo podemos lograr fácilmente, usando divisiones enteras y aritmética modular. En el siguiente ejemplo lo implementamos como función Basic para hojas de cálculo:

Public Function numdifcuad(n)
Dim i, m
m = 0 ‘Contador de casos
For i = 1 To Sqr(n) ‘Se llega a la raíz cuadrada para evitar repeticiones de divisores
If n / i = n \ i Then ‘Si el cociente es igual al cociente entero, es que es divisor
If Abs(i - n / i) Mod 2 = 0 Then m = m + 1 ‘el divisor i y el cociente n/i tienen la misma paridad, porque su diferencia da resto 0 módulo 2, luego incrementamos el contador.
End If
Next i
numdifcuad = m
End Function

Así de sencillo. Con esta función podemos contar las descomposiciones posibles para cada número. En la tabla puedes observar las correspondientes a los primeros números:



Verás que se dan muchos casos, desde el 22 o el 14, que no admiten descomposiciones, hasta el 16 o el 15, que admiten 2. Si siguiéramos leyendo hacia abajo descubriríamos que 45 es el primero que admite 3 casos: 45=23^2-22^2=9^2-6^2=7^2-2^2.que se corresponden con las descomposiciones en producto 45=45*1=15*3=9*5, todas con factores de igual paridad. El primero con cinco casos es el 96, y así podríamos seguir hasta 1680 que vimos presenta doce.



Estos resultados están ya publicados en https://oeis.org/A034178



Podemos comprobar que coinciden con nuestros resultados

Análisis teórico de la situación

Es importante distinguir en principio si N es par o impar.

Caso 1: N es impar

Si N es impar, todos los posibles pares de factores N=m*n tendrán la misma paridad, luego sólo tenemos que contarlos. Recordamos que la función TAU, que cuenta los divisores, viene dada por la fórmula


En ella a, b c,…representan los factores primos y p, q, r,…sus exponentes. Como los divisores han de formar pares, deberemos encontrar la mitad de la función (si esta es par), por tanto, si expresamos el número de descomposiciones mediante la función ND, tendremos:


Lo comprobamos. Según la tabla el 21 admite dos descomposiciones. Como 21=3*7, ?(21)=(1+1)(1+1)=4, y su mitad entera es dos, como indica la tabla.

Si TAU es impar, será porque todos los exponentes serán pares, con lo que N será un cuadrado, apareciendo entonces un par nuevo al multiplicar la raíz cuadrada por sí misma. Podemos unificar ambas situaciones:


El segundo paréntesis valdrá cero en el caso par y uno en el impar.

Es el caso del número 3969:



Los factores son todos impares, los exponentes, 4 y 2, pares. TAU valdrá en este caso (1+4)(1+2)=15. Su mitad entera es 7, y añadimos 1 por su raíz cuadrada. Coincide entonces con el valor 8 que nos da NUMDIFCUAD.

Caso 2: N es par

En este caso aparece el factor 2, lo que obliga a que los dos factores que buscamos sean ambos pares y deban contener el 2 como factor. Esto no es posible si el factor 2 es único, con exponente 1, y esa es la causa de que 6, 10, 14 o 22 no presenten descomposiciones.

No admiten descomposiciones en diferencias de cuadrados los múltiplos de 2 que no lo sean de 4, es decir, los del tipo 4k+2

N es potencia de 2

Siguiendo un razonamiento similar al caso impar, deberemos encontrar la función TAU. Como tratamos con un solo exponente, sea p, el número de divisores será 1+p, pero al ser el caso par, el divisor 1 no nos interesa, y nos quedarían tan solo p divisores. Así, para p=5 dispondríamos de 2, 4, 8, 16 y 32. La potencia completa, en este caso 32, no nos valdría, porque tendría que formar par con el 1, que es impar, luego sólo nos quedan p-1 divisores disponibles. Esto vuelve a confirmar que el caso p=1 no produce pares de la misma paridad.

Los pares engendrados por el 2 serán pues, (p-1)/2 si p es impar y Int((p-1)/2)+1 si es par, por el par que se gana por su raíz cuadrada. Unificando:

N no es potencia de 2

Si el número es potencia de 2, sin factores impares, esta expresión vale, pero, en caso contrario, estas posibilidades del factor 2 se deberán multiplicar por las correspondientes al factor impar. La complicación surge del hecho de cada par puede producir productos idénticos, que se contarían dos veces, y hay que tener en cuenta los pares de factores repetidos en el caso de que p sea par. Por ello, la única forma de encajar todo es:


Multiplicamos el número de pares con factores desiguales de la potencia de 2 contenida en N por todos los factores de la parte impar de N, y después, en otro producto, los factores con repetición se multiplican sólo por los pares que se forman en la parte impar. Algo complicado, pero funciona.

Hemos plasmado los tres casos en una única función, a la que llamaremos NUMDIFCUAD2:

Public Function numdifcuad2(n)
Dim p, q, r, s, t, m

m = n: p = 0
While m Mod 2 = 0: m = m / 2: p = p + 1: Wend ‘Extraemos la potencia de 2
If p = 1 Then numdifcuad2 = 0: Exit Function ‘Caso imposible
q = n / 2 ^ p ‘q es la parte impar
If q = 1 And p > 1 Then numdifcuad2 = Int((p - 1) / 2) + (p - 1) Mod 2
‘Es potencia de 2 pura
If p = 0 And q > 1 Then t = fsigma(q, 0): numdifcuad2 = Int(t / 2) + t Mod 2
‘Es un número impar
If p > 1 And q > 1 Then t = fsigma(q, 0): numdifcuad2 = t * Int((p - 1) / 2) + ((p - 1) Mod 2) * (Int(t / 2) + t Mod 2)
‘Tiene parte par y parte impar
End Function

La complejidad del cálculo nos ha aconsejado comprobar mediante tablas si las dos versiones de NUMDIFCUAD coinciden. Lo hemos probado desde 1 hasta 100000, sin que aparecieran discrepancias. Como ejemplo, adjuntamos los valores de algunos números de seis cifras entre los que hay impares, pares y una potencia de 2 pura:



Otra interpretación

Como todo cuadrado es suma de números impares consecutivos, como por ejemplo 16=1+3+5+7, al restar dos cuadrados se eliminarán sumandos impares, quedando tan sólo aquellos que no sean comunes. Es, por ejemplo, el caso de 44=12^2-10^2=21+23 o el de 72=9^2-3^2=7+9+11+13+15+17

Así que el número de descomposiciones que estamos estudiando coincide con el de formas de expresar el número como suma de impares.





lunes, 9 de enero de 2017

Sandwich de semiprimos


Unos comentarios de James Tanton (@jamestanton) en Twiter me han hecho interesarme por aquellos números tales que tanto su anterior como su posterior son semiprimos. No los recorreremos todos, porque son muchos, sino que los clasificaremos por tipos.

Todos los números que poseen esta propiedad han de ser pares, salvo el 5, porque si fueran impares, los semiprimos adyacentes deberían ser dobles de primos, que serían números consecutivos, lo que salvo el caso de 2 y 3 es imposible.

Consecuencia inmediata es que un número primo mayor que 5 no puede estar encerrado entre dos semiprimos.

Los comentarios citados arriba se referían a los cuadrados, y estos ya están publicados en http://oeis.org/A108278

Cuadrados “sandwicheados”

En realidad, en esa página figuran las bases, pero elevando al cuadrado nos resultarán los cuadrados pedidos:

144, 900, 1764, 3600, 10404, 11664, 39204, 97344, 213444, 272484, 360000, 656100, 685584, 1040400, 1102500, 1127844, 1633284, 2108304, 2214144,…

En todos ellos el anterior y el posterior son semiprimos. Tomemos el cuadrado 213444=462^2. Su anterior 213443=461*463  y el posterior 213445=5*42689, ambos semiprimos. El primero nos lleva a una situación interesante, y es que si el cuadrado central es n^2, el anterior será n^2-1=(n-1)(n+1), y al ser semiprimo el producto ambos factores serán primos y más aún, primos gemelos. Es lo que ha ocurrido con el 144.

Si un cuadrado está rodeado por dos semiprimos, el anterior es producto de dos primos gemelos.

Respecto a los factores de n^2+1, han de ser del tipo 4k+1, según estudiamos hace tiempo. Puedes seguir el razonamiento en el apartado dedicado a “Un cuadrado y una unidad” en el documento

http://www.hojamat.es/publicaciones/hojanum1.pdf

Al deber ser pares, estos cuadrados serán todos múltiplos de 4.

Si deseas reproducirlos con PARI, este puede ser el código:

for(i=2,2000,n=i*i;if(bigomega(n-1)==2&&bigomega(n+1)==2,print1(n,"; ")))

Triangulares entre semiprimos

También los triangulares pueden estar comprendidos entre dos semiprimos. Los primeros están publicados en http://oeis.org/A121898

120, 300, 528, 780, 2628, 3240, 3828, 5460, 13530, 18528, 19110, 22578, 25878, 31878, 32640, 37128, 49770, 56280, 64980, 72390, …

En PARI:

for(i=2,2000,n=i*(i+1)/2;if(bigomega(n-1)==2&&bigomega(n+1)==2,print1(n,"; ")))

Además de ser pares, son múltiplos de 3, y por tanto de 6. En efecto, si un triangular no es múltiplo de 3 sólo puede ser porque su orden sea del tipo 3k+1, ya que entonces el triangular tendría la expresión (3k+1)(3k+2)/2, que no contiene ningún factor 3 (en los otros casos sí). Pero en este caso, al restarle 1 no obtendríamos un semiprimo. Lo desarrollamos:


Al tener el factor 9 no puede ser semiprimo. Además hemos descubierto que es nueve veces el triangular de orden k.

Por ejemplo, el número triangular de orden 13, 91=13*14/2, no es múltiplo de 3, y su anterior, 90, no puede ser semiprimo, y es igual a 9*10=9*T(4)

El desarrollo anterior se puede invertir, es decir, que si multiplicamos por 9 un triangular y sumamos 1, obtenemos otro triangular no múltiplo de 3 o 6.
Sólo los números triangulares N múltiplos de 6 pueden tener semiprimos N-1 anteriores a ellos.

Oblongos entre semiprimos

¿Ocurrirá algo similar con los oblongos? La respuesta es negativa.

Recordemos que los números oblongos son los dobles de los triangulares, es decir, los que se pueden expresar como N=k(k+1). Así, 56=7*8 es oblongo, y su anterior 55=5*11 y el posterior 57=3*19 son semiprimos. Cumple la condición de estar entre semiprimos, pero no es múltiplo de 3 (par sí tiene que ser).

Los primeros oblongos con la propiedad requerida son:

56, 552, 870, 1056, 1190, 1640, 1892, 2652, 4032, 5256, 5402, 6806, 8372, 9120, 9506, 9702, 10920, 11772, 12656, 12882, 15006, 15252, 15500, 16256, 16770, 17556, 18632, 23256, 24492, 27722, 29070, 30800, 33306, 33672, 34410, 36290, 40200, 40602, 44310, 45582, 46872, 49506,…

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

Tomamos uno de ellos, por ejemplo 16256=127*128, y por tanto, oblongo. Su anterior es semiprimo, ya que 16255=5*3251, y 16257=3*5419, también lo es.

El posterior no puede ser múltiplo de 5, porque los oblongos terminan todos en 0, 2 o 6, y al sumar no obtendremos ni 5 ni 0 como última cifra.

El anterior no puede ser múltiplo de 3. Si lo es el oblongo, es claro que al restar 1 deja de serlo. Si no lo es, sería del tipo

(3k+1)(3k+2)-1 = 9k^2+9k+1 y tampoco.

Si deseas obtener más términos, puedes adaptar este código en PARI:

for(i=2,2000,n=i*(i+1);if(bigomega(n-1)==2&&bigomega(n+1)==2,print1(n,"; ")))

Números de Fibonacci

Están publicados los números de la sucesión de Fibonacci comprendidos entre semiprimos. Sólo hay cuatro con pocas cifras: 5, 34, 144, 46368.  Se conjetura que no hay infinitos.

Puedes estudiarlos en http://oeis.org/A167023

Cubos perfectos

Los cubos rodeados de semiprimos son muy escasos. El primero es 216=6^3, con 215=5*43 y 217=7*31.

Los siguientes llegan a ser casi inabordables: 216, 1302170688, 7211429568, 20346417000, 71887512312, 281268868608, 1394417360448, 17571944311992, 28350304855488, 170400029184000, 450335804625000, 504966851923968, 616121259098688, 1064394808685208, 3442267015299000, 3517494650695368, 3540860163178632, …

Es preferible tratar con sus bases. Las tienes publicadas en http://oeis.org/A268043

6, 1092, 1932, 2730, 4158, 6552, 11172, 25998, 30492, 55440, 76650, 79632, 85092, 102102, 150990, 152082, 152418, 166782, 211218,…

Estos números tienen una propiedad importante, y es que su anterior y posterior han de formar un par de primos gemelos. La idea es sencilla: si n^3-1 ha de ser semiprimo, al ser múltiplo de n-1, este ha de ser primo, pues en caso contrario el otro no sería semiprimo. Igual ocurre con n+1. Por ejemplo, 166782 está rodeado por los primos gemelos 166781 y 166783.

Los puedes encontrar con PARI:

for(i=2,2000,n=i^3;if(bigomega(n-1)==2&&bigomega(n+1)==2,print1(i,"; ")))

Potencias enteras

Hemos estudiado los cuadrados y cubos entre semiprimos, pero podríamos generalizar a todas las potencias de base y exponente enteros mayores que 1.
No es muy difícil encontrarlos si se dispone de una función ESPOTENCIA o similar. En nuestro equipo disponemos de ella, y hemos podido emprender la búsqueda, consiguiendo esta lista de los primeros:

144, 216, 900, 1764, 2048, 3600, 10404, 11664, 39204, 97344, 213444, 248832, 272484, 360000, 656100, 685584, 1040400, 1102500, 1127844, 1633284, 2108304, 2214144, 3504384, 3802500, 4112784, 4536900, 4588164, 5475600, 7784100, 7851204, 8388608, 8820900, 9000000, 9734400…

Los hemos publicado en https://oeis.org/A276564

Puedes reproducirla con PARI:

for(i=2,10^7,if(ispower(i)&&bigomega(i-)==2&&bigomega(i+1)==2,print1(i,", ")))

Con base prima hay muy pocos. Los primeros son 2048 y 8388608

Otros casos

Podríamos seguir el estudio con pentagonales (los primeros serían 5, 92, 590, 1080, 1820, 8400,…) o hexagonales (120, 780, 3828, 19110,…), pero por hoy ya está bien. Lo dejamos como propuesta.

miércoles, 4 de enero de 2017

Bienvenida al 2017



Para aquellos de nuestros lectores que no nos sigan en las redes sociales, resumimos los cálculos sobre el 2017 publicados en Twitter (o de próxima aparición)

Poco se puede decir del próximo año 2017, salvo que es primo, pero los siguientes años serán semiprimos: 2018=2×1009 y 2019=3×673.
Entre todos los desarrollos del 2017 que he estudiado, me quedo con este, por su sencillez y doble simetría:
2017=(47-4)×47-4

No es fácil engendrar un año con sólo dos capicúas:
2017=686+1331

Me gusta la expresión del 2017 como suma de cubos:
2017=7^3+11^3+7^3
que da lugar a esta triple simetría:
2017=343+1331+343

El nuevo año también admite una suma simétrica de tres cuadrados:
2017 =18^2+37^2+18^2

Todo número es suma de tres números triangulares. El nuevo año también:
2017=28×29/2+29×30/2+48×49/2
2017=31×32/2+38×39/2+39×40/2

Curiosa expresión del 2017 como suma de potencias con bases crecientes y exponentes decrecientes:
2017=1^5+2^4+4^3+44^2

El año 2017 “pitagorea” con cuadrado y sin él:
2017^2=792^2+1855^2
2017=44^2+9^2

Las cifras de los números importantes dan la bienvenida al 2017. Hoy con π:
2017=314×1×5+(92+6)×5-35-8

Hoy reciben al nuevo año las cifras del número “e”:
2017=2718-((2+81)×(8+2)-84-5×9)

El número áureo también aporta sus cifras al nuevo año:
2017=1618+0+339+88-7-4-9-8

Las cifras de la raíz de dos se unen a la fiesta del 2017:
2017=1414+213+562-(3+7)×(3+0)×9+50+48

También contamos en el 2017 con las cifras de la raíz cuadrada de tres:
2017=1732+0+50×8+0-7-5-6!+8+87×7

Para el nuevo año, cuadrados de cuatro en cuatro:
2017=14^2+19^2+26^2+28^2=16^2+20^2+20^2+31^2=17^2+24^2+24^2+24^2=18^2+21^2+24^2+26^2

Les toca el turno a los desarrollos monocifra:
2017=(1111-111)×(1+1)+((1+1)^(1+1))^(1+1)+1    
2017=2222-222+(2+2)^2+2/2     
2017= (333+3)×(3+3)+3/3            
2017= (444+44+4)×4+44+4+4/4 
2017= (555+-55+5)×(5-5/5)-(5+5+5)/5     
2017=666×(6+6+6)/6+6+6+6+6/6             
2017= (77+77-7-7)×(7+7)+7×7+7+7/7      
2017=88×(8+8+8-8/8)-8+8/8      
2017=999+999+9+9+9/9              

El año 17 engendrado por el 17:
2017=17×17×1×7+1-7

No podía faltar un pandigital para el nuevo año:
2017=(5+80)×4×6-9-1-7-3×2       

El 2017 subiendo del 1 al 11                       
2017=1×(2+3)×(4+5)×67-8-9×10×11         

Con tres potencias de dos se engendra todo un año:        
2017=2^11-2^5+2^0      

Hacemos bajar al 2017 tres anchos escalones                    
2017=3×(3+332+2)×2-2-1×(1+1+1)           

Las cifras de los ocho primeros primos despiden estos desarrollos:
2017=(2+3)×5×(7+1)×11-(3+171+9)          
Hasta el 2018.

lunes, 19 de diciembre de 2016

Numeradores de los números armónicos


Un número armónico Hn es un número racional formado mediante la suma de los inversos de los números naturales hasta n, es decir

La sucesión de los números armónicos tiene límite infinito, por ser divergente la serie armónica a la que pertenecen los sumandos. Es fácil ver que los denominadores de los números armónicos son, salvo simplificaciones, los primeros factoriales, pero aquí nos van a interesar los numeradores.

Con hoja de cálculo no es difícil encontrarlos, pues situamos en columna los distintos valores hasta n y en otra columna vamos dividiendo n! entre 1, 2, 3,… para después sumar la columna de cocientes (que serán todos enteros). Aquí tienes el desarrollo para n=6



Se ha dividido el factorial de 6, 720, entre 1,2,…6, sumando los cocientes hasta conseguir 1764, luego el sexto número armónico tendrá la expresión 1764/720.

Nos basamos en este cálculo en la operación de sacar el denominador común.

Si nos atenemos a la definición primera, vemos que H(n+1)=H(n)+1/(n+1). Si  imaginamos mentalmente el resultado de esa suma entenderemos que el numerador de H(n) quedará multiplicado por n+1 con la suma posterior del primitivo denominador, es decir, n!. Esto nos lleva a una fórmula de recurrencia fácil para los numeradores: a(n+1)=a(n)*(n+1)+n!

Si aplicamos la fórmula de recurrencia al 1, obtenemos la sucesión 1, 3, 11, 50, 274, 1764, 13068, 109584,…que coincide con los números de Stirling de primera clase, publicados en http://oeis.org/A000254 y que puedes estudiar allí. Nosotros simplificaremos las fracciones de los números armónicos, con lo que los valores anteriores se verán sustituidos por

 1, 3, 11, 25, 137, 49, 363, 761, 7129, 7381, 83711, 86021, 1145993,...

Estos son los numeradores que consideraremos en principio. Están también publicados (http://oeis.org/A001008)

Según las ideas contenidas en los párrafos anteriores, la primera suma que consideramos y la operación de simplificar, el algoritmo adecuado para generar estos numeradores simplificados puede ser el siguiente, que lo hemos orientado a una función de VBA:

Public Function numearmonico(n)
Dim i, v, f
v = 0
f = 1
For i = 1 To n: f = f * i: Next i ‘Se construye el factorial
For i = 1 To n
v = v + f / i ‘Se suman los cocientes del factorial con 1..n
Next i
v = v / mcd(v, f) ‘Simplificación de la fracción
numearmonico = v
End Function

Con esta función es fácil reproducir de nuevo los valores de los numeradores:



Todo lo anterior tenía por objeto que practicáramos un poco con cálculos y algoritmos, pero si hubiéramos acudido al lenguaje PARI, la generación de los numeradores es tan sencilla que se limita a su definición:

for(n=1,30,print1(numerator(sum(i=1, n, 1/i)),", "))

Obtenemos así rápidamente los primeros 30 términos:



Propiedades

Estos numeradores son también interesantes por sus propiedades. Algunas sorprenden, como que el primo p al cuadrado divide al término a(p-1) para p>3 (teorema de Wolstenholme)

Lo vemos en la tabla:


En ella se observa cómo los cuadrados de 5, 7, 11, 13 y 17 dividen a los términos de orden 4, 6, 10, 12 y 16 respectivamente. Sorprendente.

En http://oeis.org/A001008 puedes leer otras propiedades similares.

Desarrollo por Taylor

La función generatriz de los números armónicos es log(1-x)/(x-1). Podemos aprovecharla para generar de nuevo estos numeradores mediante PARI. Basta desarrollar la F.G usando el desarrollo de Taylor:

print(taylor(log(1-x)/(x-1),x,20))

Obtenemos:



Y basta leer los denominadores.

Números armónicos generalizados

Todo lo que hemos estudiado se puede extender al caso en el que la suma de fracciones se efectúe con potencias en los denominadores:

Si repetimos el algoritmo que hemos usado, pero con potencias, resultarían los numeradores generalizados, que se obtienen cambiando los sumandos 1/n por 1/n^m en el algoritmo presentado más arriba.

En Hoja de Cálculo:

Public Function numearmonico(n, m) ‘Valores de n y el exponente m
Dim i, v, f
v = 0
f = 1
For i = 1 To n: f = f * i ^ m: Next i
For i = 1 To n
v = v + f / i ^ m
Next i
v = v / mcd(v, f)
numearmonico = v
End Function

Y en PARI:

for(n=1,30,print1(numerator(sum(i=1, n, 1/i^m)),", "))

Resultan una serie de sucesiones, a las que OEIS da el nombre de “Wolstenholme numbers”, y que tienen propiedades similares a los numeradores estudiados. Las primeras, según su exponente son:

Con el 2 

http://oeis.org/A007406

1, 5, 49, 205, 5269, 5369, 266681,… y en ellas el primo p divide a a(p-1). Por ejemplo, el 5 divide a a(4)

Con el 3

http://oeis.org/A007408

1, 9, 251, 2035, 256103, 28567, 9822481,…

Con 4

http://oeis.org/A007410

1, 17, 1393, 22369, 14001361, 14011361,…

Con 5

http://oeis.org/A099828

1, 33, 8051, 257875, 806108207, 268736069,…

Todos tienen propiedades similares, según puedes consultar en los enlaces. Podemos resumir todos en una tabla de hoja de cálculo usando la función antes definida. Aquí tienes los primeros: