miércoles, 29 de junio de 2016

Volvemos a los números AROLMAR (8) Números “superarolmar” y otros parientes

Con este título algo humorístico de superarolmar identificamos los números arolmar en los que la media prima de sus factores primos es también divisor del número. Por ejemplo, el número 20915 tiene como factores 5, 47 y 89, cuya media es precisamente el 47, primo y divisor de 20915. Aunque sin ese nombre, están contenidos en la sucesión http://oeis.org/A229094 ya publicada:

105, 231, 627, 897, 935, 1365, 1581, 1729, 2465, 2967, 4123, 4301, 4715, 5313, 5487, 6045, 7293, 7685, 7881, 7917, 9717, 10707, 10965, 11339, 12597, 14637, 14993, 16377, 16445, 17353, 18753, 20213, 20757, 20915, 21045, 23779, 25327, 26331, 26765, 26961,…

Es evidente que forman una subsucesión de nuestros arolmar (https://oeis.org/A187073), y como tales, han de ser todos impares, compuestos y libres de cuadrados. Podemos encontrarlos con hoja de cálculo y una rutina similar a la siguiente (la hemos simplificado un poco):

For i = j To l
If esarolmar(i) Then
a = sopf(i) / f_omega(i)
If esmultiplo(i, a) Then msgbox(i)
End If
End If
Next i

En PARI

prevcond(n)=issquarefree(n)&&!isprime(n)
sopf(n)= { my(f, s=0); f=factor(n); for(i=1, matsize(f)[1], s+=f[i, 1]); s }
averg(n)={my(s); s=sopf(n)/omega(n); return(s)}
esarolmar(n)={my(a=averg(n),s);s=prevcond(n)&&a==truncate(a)&&isprime(a); s}
{for(i=2,10^5,if(esarolmar(i),p=averg(i);if(i/p==truncate(i\p),print1(i,", "))))}


Al factorizar estos números nos hemos dado cuenta de que casi todos tienen tres factores, por lo que los destacamos aparte:

Caso de tres factores

Los primeros superarolmar con tres factores son estos:

105, 231, 627, 897, 935, 1581, 1729, 2465, 2967, 4123, 4301, 4715, 5487, 7685, 7881, 9717, 10707, 11339, 14993, 16377, 17353, 20213, 20915, 23779, 25327, 26331, 26765, 29341, 29607, 32021, 33335, 40587, 40807, 42911, 48635, 49321, 54739, 55581, 55637, 59563, 60297, 63017,…

Sorprendentemente, no estaban publicados en OEIS, y los hemos añadido en la sucesión http://oeis.org/A262723

Según la definición, los tres factores primos formarán una progresión aritmética, y el del centro será la media prima de los tres (o de los otros dos). Por ejemplo, 627 tiene como factores primos 3, 11 y 19, siendo 11 la media prima de todos y también un factor primo de 627. Por tanto, en estos casos, el número dado se forma mediante la media (11 en este caso) y la descomposición de su doble (22 en el ejemplo, 22=3+19) en suma de dos factores primos. Como ves, Goldbach no nos abandona.

Otro ejemplo: 5487=3*31*59, con lo que 5487 es el producto de 31 por dos primos que suman su doble (62=3+59), y es obvio que los tres 3, 31 y 59 forman una progresión aritmética. Hemos investigado la diferencia en esa progresión y puede ser cualquier número par, múltiplo de 4 si los primos son los tres del mismo tipo (4k+1 o 4k+3).

Otra consecuencia de la definición es que si suprimimos en el producto de factores el que equivale a la media de los tres, el producto de los otros dos forma un semiprimo arolmar, que en el ejemplo sería 3*59=177. Tenemos pues la misma situación de entradas anteriores, que si multiplicamos los factores de un semiprimo arolmar por su media, resulta otro arolmar, que es superarolmar con tres factores.

También pertenecen a la sucesión http://oeis.org/A203614, formada por aquellos números N en los que, si se forma el polinomio (x-p1)(x-p2)…(x-pk), p1 < p2 < … < pk  con todos los divisores primos de N, su integral definida entre el menor p1 y el mayor pk, es nula. Es una simple curiosidad derivada de la simetría del polinomio entre los dos primos extremos:



La gráfica se ha construido a partir del número 627 y sus factores 3, 11 y 19. Se percibe su simetría y, por tanto, la anulación de la integral.

Si uno de los divisores primos es el 3, el número dado será divisible entre la suma de los tres divisores primos, ya que ésta equivale a 3p2, y el cociente entre ambas será p3. Esto ocurre en estos términos:

105, 231, 627, 897, 1581, 2967, 5487, 7881, 9717, 10707,…

Por ejemplo, 9717=3*41*79 y la suma de los tres factores, 123, siendo el cociente 9717/123 igual a 79, el mayor divisor primo. Por tener esta propiedad, estos términos pertenecen a http://oeis.org/A131647

Con más de tres factores

Con cuatro factores aparecen muchos menos:

1365, 5313, 6045, 7293, 7917, 10965, 12597, 14637, 16445, 18753, 20757, 21045, 26961, 28101, 28497, 30381, 34365, 35853, 40641, 42845, 47541, 47957,…

Un ejemplo: 7917=3*7*13*29, con suma de primos 52 y media 13, que lo es también de 3, 7 y 29, cuyo producto, como en el caso anterior, también es un número arolmar: 3*7*29=609, con media prima el ya sabido 13.

En una mayoría de casos la media se corresponde con el tercer divisor primo (en orden creciente), pero también se da el caso de que sea el segundo, como en 7293= 3*11*13*17, en el que la media es 11, el segundo factor primo.

Estos son los primeros con cinco factores que hemos encontrado:


Los que tienen como factor 5, según un razonamiento similar al caso de tres, serán divisibles entre la suma de los divisores primos. Así tenemos que 49335=3*5*7*13*37, y la suma de los cinco factores es 55, y se cumple que 49335=55*897=55*3*13*23. El cociente 897 también pertenece al tipo de números que estamos estudiando, pero no seguiremos por ahí.

Sólo a título de curiosidad, hemos encontrado, con seis, estos dos ejemplos:


Y, por último, con siete:


Lo dejamos, pues no parece que se vayan a descubrir más propiedades interesantes.

Jerarquía de sucesiones respecto a los números arolmar

Los números arolmar pertenecen trivialmente a la sucesión http://oeis.org/A078177, que está formada por los números compuestos tales que la media de sus divisores primos es un entero.

4, 8, 9, 15, 16, 20, 21, 25, 27, 32, 33, 35, 39, 42, 44, 49, 50, 51, 55, 57, 60, 64, 65, 68, 69, 77, 78,…

Es la sucesión “madre” de todas las que vamos a considerar ahora, porque el que la media sea entera es la cuestión básica. Si no es entero, todo lo que hemos escrito hasta ahora sobra.

Los podemos generar en PARI mediante el código

sopfr(n)= { my(f, s=0); f=factor(n); for(i=1, matsize(f)[1], s+=f[i, 1]*f[i, 2]); s }
{forcomposite(i=4,200,m=sopfr(i)/bigomega(i);if(m==truncate(m),print1(i,", ")))}

Definimos SOPFR como la suma de divisores primos con repetición (por eso se multiplica por f[i, 2]) y bigomega como su cuenta. Dividimos y resulta la media, a la que exigimos que sea entera (m==truncate(m)).

El resultado es este, que coincide con el listado de A078177:



Un paso más sería exigir que los números fueran libres de cuadrados. Los primeros serían estos:

15, 21, 33, 35, 39, 42, 51, 55, 57, 65, 69, 77, 78, 85, 87, 91, 93, 95, 105, 110, 111, 114, 115, 119, 123, 129, 133, 141, 143, 145, 155,…

En todos ellos SOPF(N)/OMEGA(N) es un entero. En el listado ya se encuentran fácilmente los números arolmar.

El código en PARI se modificaría cambiando SOPFR por SOPF y BIGOMEGA por OMEGA (se elimina la repetición) y se exige que el número sea libre de cuadrados (issquarefree):

sopf(n)= { my(f, s=0); f=factor(n); for(i=1, matsize(f)[1], s+=f[i, 1]); s }
{for(i=4,200,if(issquarefree(i),m=sopf(i)/omega(i);if(m==truncate(m)&&bigomega(i)>>1,print1(i,", "))))}

Así se generan fácilmente:



Al mismo nivel en jerarquía sería la sucesión determinada por la condición de que la media sea prima, pero sin exigir que el número sea libre de cuadrados. Está publicada en http://oeis.org/A134344 y también contiene a los arolmar.

4, 8, 9, 16, 20, 21, 25, 27, 32, 33, 44, 49, 57, 60, 64, 68, 69, 81, 85, 93, 105, 112, 116, 121, 125,…

En PARI volvemos a usar SOPFR y BIGOMEGA y suprimimos ISQUAREFREE:

sopfr(n)= { my(f, s=0); f=factor(n); for(i=1, matsize(f)[1], s+=f[i, 1]*f[i, 2]); s }
{forcomposite(i=4,500,m=sopfr(i)/bigomega(i);if(m==truncate(m)&&isprime(m),print1(i,", ")))}

Aquí tienes la comprobación:



Debajo de estos en la jerarquía estarían nuestros arolmar. A la condición de media entera le  añadimos la de que esa media sea prima. Sería la tercera exigencia.

En PARI:

sopf(n)= { my(f, s=0); f=factor(n); for(i=1, matsize(f)[1], s+=f[i, 1]); s }
{forcomposite(i=4,500,if(issquarefree(i),m=sopf(i)/omega(i);if(m==truncate(m)&&isprime(m),print1(i,", "))))}

Aquí añadimos isprime(m), para exigir media prima. Se reproduce así nuestra sucesión con otro código más:




Si exigimos a los números arolmar que la media prima de factores primos sea también divisor del número, aparecerían los números “superarolmar” ya presentados:

sopf(n)= { my(f, s=0); f=factor(n); for(i=1, matsize(f)[1], s+=f[i, 1]); s }
{forcomposite(i=4,10000,if(issquarefree(i),m=sopf(i)/omega(i);c=i/m;if(m==truncate(m)&&isprime(m)&&c==truncate(c),print1(i,", "))))}

Aquí exigimos que m sea divisor de i, mediante c==truncate(c)


Dentro de la jerarquía también entrarían los primos arolmar introducidos por Rafael Parra y otras variantes introducidas en la anterior entrada, pero los elementos principales ya están presentados.



lunes, 20 de junio de 2016

Volvemos a los números AROLMAR (7) Números “arolmar” con más de dos factores

Los números arolmar semiprimos nos dieron bastante juego en la entrada anterior. Probaremos ahora con los que son producto de tres factores primos distintos (recuerda que son números libres de cuadrados).

Números arolmar con más de dos factores primos

Ya presentamos anteriormente la función ESAROLMAR

http://hojaynumeros.blogspot.com.es/2015/12/volvemos-los-numeros-arolmar-1-historia.html

que determina si un entero positivo es de tipo arolmar o no. La usaremos de nuevo en esta entrada para seguir descubriendo curiosidades.

Función arolmarentre

Puede resultar interesante una función que cuente los números arolmar existentes entre dos números, o los inferiores a uno dado, tal como se efectúa con los números primos y la función prime(N). Una vez tenemos definida la función esarolmar, bastará crear un bucle desde M hasta N y contar los arolmar que aparecen.

Hemos recorrido los enteros de 1000 en 1000 y contado los de tipo arolmar que aparecen en ellos. Cuando estudiamos los resultados observamos que existe bastante regularidad si se prescinde de pequeñas oscilaciones. Lo puedes observar en esta tabla, que llega hasta el 20000:



Hemos prolongado el estudio hasta 100000 con hoja de cálculo, resultando un incremento medio de unas 32 apariciones en cada millar, con un coeficiente de variación del 17%, bastante alto e indicativo del grado de oscilación que presentan los datos. Gráficamente:



Resulta interesante comparar estos datos con los que nos devuelve la función primo(n), que calcula los números primos existentes hasta n, o, en nuestro caso, entre dos enteros. Al compararlos advertimos un gran paralelismo, tanto que el cociente entre los números arolmar de cada intervalo y los números primos existentes en ellos muestra siempre valores cercanos a un promedio de 0,41, por lo que ambos fenómenos van a la par, como hemos comprobado para valores inferiores a 10^6:



Y gráficamente:



Estos resultados nos animan a relacionar la distribución de números arolmar con el teorema de los números primos, y ajustar a la expresión 0,42N/ln(N) (hemos aumentado el coeficiente para lograr un mejor ajuste). Lo hemos efectuado y resulta un coeficiente impresionante de R2=0,99999275. En la gráfica lo vemos:




Números arolmar con tres o más factores

Con la función esarolmar se pueden emprender búsquedas más fáciles. Por ejemplo, si le añadimos la condición de que el número de factores primos (f_omega(n)) sea igual a 3, nos resultarán los arolmar 3-p.

Los primeros son estos:

105, 195, 231, 465, 483, 609, 627, 645, 663, 861, 897, 915, 935, 969, 987, 1185, 1221, 1239, 1265, 1419, 1545, 1581, 1599, 1653, 1729, 1743, 1887, 2067, 2121, 2139, 2255, 2265, 2373, 2409, 2465, 2607, 2679, 2751, 2769, 2821, 2895, 2915, 2967…

Aquí tienes las descomposiciones factoriales de los primeros. Puedes comprobar mentalmente que el promedio de los tres factores es primo. Por ejemplo, 465=3*5*31 y la media de los tres factores es 13, otro primo.




Número arolmar r-p correspondiente a un primo dado

Siguiendo las ideas aportadas por Rafael Parra en el documento citado (http://www.hojamat.es/parra/arolmar.pdf), dado un primo P, si descomponemos 2P en todas las sumas de primos posibles y nos quedamos con la que presente el producto mínimo (o los factores más pequeños) encontraremos el primo arolmar correspondiente a P, que será precisamente ese producto, y los demás números arolmar asociados que no tendrán ese carácter minimal. Este procedimiento se aplica a cualquier número de factores, sustituyendo 2P por 3P, 4P,…por lo que dará lugar a números arolmar producto de un número cualquiera de factores.

Por ejemplo, deseamos encontrar el primo arolmar correspondiente al primo 11, con cuatro factores. Bastará encontrar todas las descomposiciones de 4*11=44 en sumas de cuatro primos y con media prima.



El mínimo 3045 será el primo arolmar que puede constituir una función del primo 11 y del número 4 de factores.

Aumento de factores a partir un número arolmar dado

Un caso interesante es el de aquellos números arolmar de tres factores que provienen de un arolmar semiprimo al que multiplicamos por la media de sus factores, que será prima:



Vemos en ellos que el segundo tiene los mismos factores que el primero, con el añadido de su media aritmética que también es prima. Los tres forman una progresión aritmética:

Si en una terna de primos en progresion aritmética multiplicamos los dos extremos obtenemos un arolmar semiprimo y si multiplicamos los tres, un arolmar de 3 factores. Coinciden las dos generaciones paralelas.

Esta operación nos plantea una pregunta: ¿es el número primo media entre los dos factores el único que convierte un arolmar semiprimo en otro de tres factores, o existen más?¿Es posible en todos los casos encontrar esos otros primos, o existen casos en los que no es posible?

Conjeturamos que la respuesta es afirmativa, ya que esta operación equivale a resolver el problema diofántico siguiente: La suma de los dos factores de un arolmar semiprimo es un número par, doble de primo. Si le añadimos otro primo, para que al multiplicar resulte otro arolmar, la suma debe ser el triple de otro primo, es decir, se debe encontrar solución a la ecuación 3X-Y=2P, con X,Y primos. Las soluciones de una ecuación diofántica se expresan como términos de una progresión aritmética, luego por el Teorema de Dirichlet podemos confiar en que existan entre ellas números primos.

Hemos preparado un algoritmo (algo complejo, por lo que no lo incluimos) para encontrar el menor primo que convierta un arolmar semiprimo en otro de tres factores, sin acudir a la media. Incluimos los primeros resultados:



Conjetura: Todo arolmar semiprimo se puede convertir en un arolmar de tres factores primos si se multiplica por un factor primo adecuado, distinto de la media prima.

Podemos expresar estas operaciones desde el punto de vista de la divisibilidad: hemos conseguido que todo arolmar semiprimo posea un múltiplo con tres divisores primos. La operación inversa no tiene por qué tener éxito: encontrar un número arolmar que sea divisor de otro.

Números arolmar con más factores

A continuación incluimos el listado de los primeros números arolmar con 4, 5 o 6 divisores primos distintos:

Con 4 factores

En la tabla figura el número, su descomposición factorial y la media prima de su factores. Te puedes ejercitar en comprobar esas medias. Por ejemplo: 5565 es arolmar porque la media de sus factores 3, 5, 7 y 53 es (3+5+7+53)/4=17, número primo.


Con cinco factores



Con seis







viernes, 10 de junio de 2016

Semiprimos consecutivos


No es la primera vez que relacionamos semiprimos. En una entrada anterior (http://hojaynumeros.blogspot.com.es/2016/04/volvemos-los-numeros-arolmar-5.html) describimos los semiprimos arolmar. También hemos publicado en OEIS sucesiones relacionadas con ellos, como http://oeis.org/A187400.

Los semiprimos son aquellos números en cuya descomposición factorial aparecen sólo dos números primos, iguales, como en 9=3*3, o distintos, 6=2*3. En esta entrada no exigiremos que los dos factores de estos números sean distintos, por lo que nuestro estudio abarcará también los cuadrados de primos, es decir, todo el conjunto

4, 6, 9, 10, 14, 15, 21, 22, 25, 26, 33, 34, 35, 38, 39, 46, 49, 51, 55, 57, 58, 62, 65, 69, 74, 77, 82, 85, 86, 87, 91, 93, 94, 95, 106, 111, 115, 118,…
(http://oeis.org/A001358)

Todos ellos se caracterizan mediante la función BIGOMEGA, que cuenta los factores de cada número contando las repeticiones. En nuestro caso basta exigir que BIGOMEGA valga 2 para asegurar que un número es semiprimo. Si deseáramos que los factores fueran distintos, también nos aseguraríamos de que OMEGA, que cuenta los factores sin repetición, también valiera 2.
A partir de ahora nos dedicaremos a los semiprimos consecutivos, como 10=2*5 y 14=2*7. En este caso comparten el factor 2, pero esto no ocurre en general, hay consecutivos que no comparten factores, como 51=3*17 y 55=5*11.

Una primera cuestión que nos plantearemos es si la suma o diferencia de dos semiprimos consecutivos puede ser también un número semiprimo. Tenemos implementada la función ESSEMIPRIMO para hojas de cálculo, lo que facilita las búsquedas.

Public Function essemiprimo(n) As Boolean
Dim a, b

a = mayordiv(n)
b = n / a
If esprimo(a) And esprimo(b) Then essemiprimo = True Else essemiprimo = False
End Function

El problema es que usa la función mayordiv, por lo que lo dejamos aquí y pasamos al lenguaje PARI, que posee todas las funciones implementadas, es gratuito y de no muy difícil aprendizaje. En este lenguaje los semiprimos se caracterizan con la condición

bigomega(p)==2

Cada vez que encuentres una expresión similar en nuestras codificaciones sabrás que nos referiremos a que ese número es semiprimo.

Por ejemplo, con esta condición se puede encontrar el semiprimo más pequeño que es mayor que n mediante esta función:

proxsem(n)=local(p,s,r);s=0;p=n;while(s==0,p+=1;if(bigomega(p)==2,s=1;r=p)); return p}

En esta función la variable p va avanzando de unidad en unidad (p+=1) y creamos un bucle que no para hasta encontrar un semiprimo (bigomega(p)==2), en cuyo caso la variable de control s pasa de 0 a 1, para salir del bucle.

Si esta función la aplicamos a un semiprimo p, obtendremos un par de semiprimos consecutivos, con p y proxsem(p), que es la estructura con la que vamos a comenzar esta entrada.

Semiprimos consecutivos con suma también semiprima

Muchos pares de semiprimos consecutivos cumplen esto para la suma. Los primeros son:



En la tabla, creada con Excel, figura junto a cada número su descomposición en factores, sabiendo que el primer número del corchete es el factor primo y el segundo su exponente. Las dos primeras columnas contienen el par de semiprimos consecutivos y en la tercera su suma, también semiprima. Nos sorprendió su abundancia, pues creíamos que no aparecerían muchos.

Algunos comparten un factor, como 6, 9 y su suma 15, pero no es lo normal, En este caso, y en el anterior de 4, 6 y 10, es posible porque 2+3=5, suma prima de primos que sólo se da en los primos gemelos, pero según hemos observado, no dan lugar a semiprimos consecutivos. En la misma tabla, un poco más abajo, vemos que 34=2*17 no es consecutivo con 38=2*19, ya que se interpone 35=5*7. No hemos encontrado otros ejemplos con factores comunes.

Debemos inferir que aquí influye más la casualidad que las propiedades de los semiprimos en el hecho de que aparezca suma semiprima, como ocurre en el último ejemplo, en el que el par está formado por 129=3*43, 133=7*19 y su suma 262=2*131. Si recorres la tabla observarás que este caso se repite: dos semiprimos impares que suman un par con factor 2 y otro primo. No parece existir otra relación entre ellos.

Para buscarlos con PARI puedes usar esta codificación:

proxsem(n)=local(p,s,r);s=0;p=n;while(s==0,p+=1;if(bigomega(p)==2,s=1;r=p));p}
{for(i=1,2000,if(bigomega(i)==2,a=proxsem(i);if(bigomega(a+i)==2,print1(i,", "))))}

En la primera línea se define la función proxsem (próximo semiprimo) y en la segunda se emprende la búsqueda. El resultado es, para el primer semiprimo del par, el siguiente:

4, 6, 25, 34, 38, 39, 46, 51, 57, 65, 69, 77, 87, 93, 95, 106, 111, 118, 129, 133, 145, 146, 161, 166, 169, 177, 178, 187, 194, 201, 205, 206, 209, 213, 218, 221, 249, 262, 278, 291, 298, 305, 309, 314, 323, 334, 335, 341, 355, ...

Este resultado estaba inédito y lo hemos publicado en http://oeis.org/A272306.

Semiprimos consecutivos con diferencia también semiprima

Estos otros semiprimos se diferencian en un semiprimo con el siguiente semiprimo.

10, 15, 51, 58, 65, 87, 111, 123, 129, 146, 209, 226, 237, 249, 274, 278, 291, 305, 335, 346, 365, 371, 377, 382, 403, 407, 427, 447, 454, 485, 489, 493, 497, 505, 529, 538, 545, 573, 591, 597, 629, 635, 649, 681, 699, 707, 713, ...

Los hemos obtenido en PARI con el código

proxsem(n)=local(p,s,r);s=0;p=n;while(s==0,p+=1;if(bigomega(p)==2,s=1;r=p));p}
{for(i=1,2000,if(bigomega(i)==2,a=proxsem(i);if(bigomega(a-i)==2,print1(i,", "))))}

Con Excel:



No debemos pensar que esta tabla equivale a la anterior con las columnas cambiadas, pues fallaría el hecho de que los semiprimos han de ser consecutivos. Hemos publicado esta sucesión en http://oeis.org/A272307

Intersección de ambos

Un subconjunto interesante de la primera sucesión (A272306) es el siguiente, su intersección con A272307:

51, 65, 87, 111, 129, 146, 209, 249, 278, 291, 305, 335, 377, 407, 447, 485, 489, 497, 629, 681, 699, 749, 767, 785, 917, 939, 951, 989, 1007, 1018, 1037, …

Recogemos en la tabla cada término con su siguiente semiprimo y la diferencia entre ambos


No siempre resultan cuadrados en la diferencia, después aparecen otros semiprimos. El primero que aparece es el 15, correspondiente al semiprimo 5818 y su consecutivo 5833.

Números consecutivos, ambos semiprimos, cuya suma es semiprima

Dos semiprimos consecutivos pueden serlo también como números (N y N+1). Ya están publicados en http://oeis.org/A188059 (sólo el semiprimo más pequeño del par)

25, 34, 38, 57, 93, 118, 133, 145, 177, 201, 205, 213, 218, 298, 334, 361, 381, 394, 446, 501, 633, 694, 698, 842, 865, 878, 898, 921, 1114, 1141, 1226, 1285,…

Por ejemplo, 57=3*19, 58=2*29, y su suma 115=5*23 también es semiprimo.

Semiprimos consecutivos que suman un primo

Terminamos con otras dos curiosidades, aunque podríamos abordar más. Dos semiprimos consecutivos pueden producir un número primo al sumar o restar. Estos que siguen suman un primo:

9, 14, 21, 22, 26, 33, 35, 62, 74, 82, 86, 115, 141, 155, 158, 226, 259, 267, 295, 326, 346, 358, 362, 393, 417, 453, 482, 623, 703, 718, 734, 771, 799, 914, 933, 934, 955, 995, …

Por ejemplo, 33=3*11 es semiprimo. Su consecutivo es 34=2*17, y su suma 67 es prima.

Los hemos publicado en http://oeis.org/A272308, y puedes estudiar allí varias formas de generarlos.

Igualmente, existen semiprimos consecutivos con diferencia prima. Los primeros son:

4, 6, 22, 26, 35, 39, 46, 49, 55, 62, 69, 74, 77, 82, 91, 95, 106, 115, 119, 134, 143, 155, 159,… y los hemos publicado en http://oeis.org/A272309

Por ejemplo 69=3*23 y 74=2*37 se diferencian en 7, que es primo.


miércoles, 1 de junio de 2016

La permutación Yellowstone


En los últimos meses nos hemos acostumbrado a estudiar sucesiones con definiciones muy originales, como las incluidas en el documento de N.J.A. Sloane “My Favorite Integer Sequences” http://arxiv.org/abs/math/0207175

En esta de hoy se comienza con los valores a(1)=1, a(2)=2 y a(3)=3, y los siguientes a(n) son los números naturales más pequeños que aún no hayan aparecido en la sucesión y que tengan algún factor común con a(n-2) y ninguno con a(n-1).

Para entenderlo bien podemos ir generando términos según la definición. A 1, 2 y 3 le debe seguir el 4, que es el más pequeño que comparte factores primos con el 2 pero no con el 3. Tenemos ya 1, 2, 3 y 4.

El siguiente no puede ser 5, 6, 7 ni 8. Deberá ser el 9, que comparte el factor 3 con el 3 y ninguno con el 4. Así podemos seguir generando, hasta completar:

1, 2, 3, 4, 9, 8, 15, 14, 5, 6, 25, 12, 35, 16, 7, 10, 21, 20, 27, 22, 39, 11, 13, 33, 26, 45, 28, 51, 32, 17, 18, 85, 24, 55, 34, 65,…( http://oeis.org/A098550)

Esta sucesión no es creciente, y algunos números tardan en aparecer, como el 10. Se llama permutación porque se ha demostrado que todos los números naturales aparecen una vez

 (Ver https://cs.uwaterloo.ca/journals/JIS/VOL18/Sloane/sloane9.pdf)

Más adelante comentaremos sus propiedades. Puedes consultar también el documento

http://arxiv.org/pdf/1501.01669v2.pdf

Ahora, como siempre intentamos en este blog, la intentaremos reproducir con hoja de cálculo.

Generación con hoja de cálculo

Aprovecharemos las columnas de una hoja de cálculo para simplificar el problema. La parte más pesada de la generación es averiguar si el siguiente número pertenece o no a la sucesión ya formada por k términos. Deberíamos recorrer los ya aparecidos y compararlos con el candidato nuevo. Se tarda bastante cuando ya existen muchos términos, y es conveniente simplificar.

Para que las comparaciones sean más rápidas dedicaremos la primera columna A de una hoja a llevar cuenta de los términos que ya han salido. Escribiremos un 1 en la fila k si ya ha aparecido un término con valor k, y la dejamos en blanco si aún no ha aparecido. Así, si analizamos un nuevo candidato, no hay que recorrer un conjunto, sino ir a su fila directamente. En la imagen vemos en la columna B los términos que van saliendo, y en la columna A un 1 en las filas correspondientes a dichos elementos:



Como el 14 y el 15 ya pertenecen a la sucesión, en las filas 14 y 15 figura un 1. La 10 está vacía porque aún no ha aparecido el 10 como término válido. Analiza bien los distintos valores de ambas columnas.

El averiguar si ya ha salido un número o no se puede resolver con esta función:

Function esta(m)
If ActiveWorkbook.Sheets(1).Cells(m, 1).Value = 1 Then esta = True Else esta = False
End Function

Si en la celda Cells(m, 1) hay escrito un 1, declaramos esta = True y false en caso contrario. Esto simplifica mucho el proceso y le da más rapidez.

La segunda parte, el que posea factores comunes con a(n-2) y no los posea con a(n-1) se resuelve con el MCD. Si este es mayor que 1, existen factores comunes y si es 1, no, y los términos son primos entre sí.

El Basic VBA lo resolvemos así: mcd(m, a) > 1 And mcd(m, b) = 1

Teniendo en cuenta estas dos consideraciones, el resto del algoritmo se reduce a borrados de celdas, estructuras de control y demás. Lo puedes estudiar en nuestra hoja yellowstone.xlsm, alojada en la dirección

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

En ella, para comprobar que esta sucesión recorre todos los números naturales (por eso la llamamos permutación además de sucesión), permitimos que se escriba un entero (no debe ser muy grande por la limitada velocidad del algoritmo) y la sucesión se desarrolle hasta llegar a ese número.

En la imagen hemos deseado llegar hasta el 12:


Disponemos de un botón para borrar datos previos y otro para iniciar la sucesión. En efecto, al pulsar este, en la columna B aparece la sucesión Yellostone hasta el 12:


Los términos aparecen en la columna B y los lugares ya ocupados, mediante un 1, en la A.

Descarga la hoja si te apetece y busca valores algo mayores, para descubrir en qué número de orden aparecen en la sucesión y observarás que la columna A se va llenando de unos.

Por ejemplo, el 540 no aparece hasta el término 590


Esto significa que han aparecido unos 50 términos mayores que él antes de que se incorpore él mismo. Para quienes no deseen descargar la hoja y sólo estudiar el proceso, incluimos el código utilizado. En otras entradas comprobaremos algunas otras propiedades de esta sucesión.

Public Function mcd(a1, b1)
Dim a, b, r

'Halla el MCD de a1 y b1

r = 1
a = a1
b = b1
If b = 0 Then b = 1
If a = 0 Then a = 1
While r <> 0
r = a - b * Int(a / b)
If r <> 0 Then a = b: b = r
Wend
mcd = b
End Function
Function esta(m)
If ActiveWorkbook.Sheets(1).Cells(m, 1).Value = 1 Then esta = True Else esta = False
End Function

Sub sucesion()
Dim n, k, b, c, m, i


Call borrado
n = ActiveWorkbook.Sheets(1).Cells(6, 9).Value
a = 2: b = 3:  k = 3
ActiveWorkbook.Sheets(1).Cells(1, 2).Value = 1
ActiveWorkbook.Sheets(1).Cells(2, 2).Value = 2
ActiveWorkbook.Sheets(1).Cells(3, 2).Value = 3
ActiveWorkbook.Sheets(1).Cells(1, 1).Value = 1
ActiveWorkbook.Sheets(1).Cells(2, 1).Value = 1
ActiveWorkbook.Sheets(1).Cells(3, 1).Value = 1
While k < 10 ^ 5 And b <> n
m = 3
While esta(m): m = m + 1: Wend

While Not (mcd(m, a) > 1 And mcd(m, b) = 1) And m < 10 ^ 5
m = m + 1
While esta(m): m = m + 1: Wend
Wend

a = b: b = m: k = k + 1
ActiveWorkbook.Sheets(1).Cells(k, 2).Value = m
ActiveWorkbook.Sheets(1).Cells(m, 1).Value = 1
Wend

End Sub

Curiosidades

Ya conocemos la definición de esta sucesión y cómo generarla con hoja de cálculo. Ahora desarrollaremos alguna propiedades, la mayoría tomadas de la página http://oeis.org/A098550
En primer lugar, bueno será el estudio gráfico de la evolución de esta sucesión:



Los datos están tomados del ejemplo de la entrada anterior, términos hasta que aparezca el 540. Vemos una línea de tendencia lineal clara (en realidad, se ha visto que no es lineal), un poco por debajo de los números de orden, con otra línea de más pendiente algo difusa, además de casos aislados situados superior e inferiormente. Si esta sucesión recorre todos los valores, cada uno elegido en la escala del eje Y se corresponderá con un punto del gráfico. Parece ser que el nombre de Yellowstone proviene de este gráfico, en el que las imágenes más pequeñas corresponden a los números primos, el núcleo central contiene bastantes alternancias entre pares e impares, mientras que surgen picos semejantes a los chorros aleatorios de materia de un geyser. Muchos de estos picos aparecen dos unidades más tarde que los primos. Vemos un corte con más detalle:



Aquí los mínimos se sitúan en los valores primos 5, 7, 11 (junto al 13) y 19, mientras que los “chorros” o picos corresponden a 85, 91 y 95. Nos referimos a valores, no a números de orden.

Infinitud de la sucesión

Para demostrar que la serie es infinita bastará mostrar que dados un a(n-2) y a(n-1), el conjunto de candidatos a ser el siguiente número, no está vacío. En efecto, basta elegir el valor a(n-2)*p, siendo p un número primo mayor que a(n-1). Si ese conjunto no está vacío, siempre existirá un término posterior a los dados, y la sucesión será infinita. Por una razón similar, en cada tres términos consecutivos ha de haber al menos un número compuesto, pues tres primos consecutivos no cumplirían la definición.

Dentro de esta sucesión infinita los primeros primos aparecen en su orden natural, como podemos comprobar en esta lista

1, 2, 3, 4, 9, 8, 15, 14, 5, 6, 25, 12, 35, 16, 7, 10, 21, 20, 27, 22, 39, 11, 13, 33, 26, 45, 28, 51, 32, 17, 18, 85, 24, 55, 34, 65, 36, 91, 30, 49, 38, 63, 19, 42, 95, 44, 57, 40, 69, 50, 23, 48,…

No se ha podido demostrar esta conjetura para todos los primos.

Puntos fijos

Una cuestión curiosa es averiguar qué números aparecen en un número de orden igual a ellos, es decir, que a(n)=n. Hasta ahora sólo se han encontrado estos:
1, 2, 3, 4, 12, 50, 86 (http://oeis.org/A251411)

Se ha intentado hasta 10^8 sin conseguir otro más. Con nuestra hoja de cálculo podemos comprobar alguno. En la imagen tienes el correspondiente al 86:


lunes, 23 de mayo de 2016

Volvemos a los números arolmar (6) Semiprimos arolmar enlazados


Vimos en la anterior entrada dedicada a este tema

(http://hojaynumeros.blogspot.com.es/2016/04/volvemos-los-numeros-arolmar-5.html)

que cada semiprimo arolmar está determinado por un par de primos cuya media es otro primo. Podíamos intentar enlazar el tercer primo de la terna con un cuarto primo (el menor posible) que también formara un arolmar con el tercero. Según la tabla incluida en la anterior entrada


21=3*7 está enlazado con 133=7*19, con lo que los tres primos 3, 7 y 19 están enlazados con sus medias 5 y 11 y sus números arolmar 21 y 133. El 33=3*11 está enlazado con 253=11*23.

Igual que conjeturamos que a cada primo P le correspondía un arolmar semiprimo cuyos factores primos sumaran 2P, ahora podemos intentar que dado un primo P, encontrar otro primo cuya media con el primero también sea prima. Así, las cadenas de semiprimos arolmar enlazados alcanzarían una longitud infinita.

Hemos implementado esta búsqueda de un segundo primo en hoja de cálculo, con lo que podemos crear cadenas de primos enlazados con media prima entre cada dos consecutivos. Su código es el siguiente:

Public Function proxprimrol(p)
Dim pr, prox
Dim es As Boolean

If Not esprimo(p) Then proxprimrol = 0: Exit Function ‘Si no es primo se devuelve un cero
pr = p + 1 ‘La variable pr busca el siguiente primo válido
es = True ‘Control del WHILE
prox = 0
While es
pr = primprox(pr) ‘Busca los primos siguientes
If esprimo((p + pr) / 2) Then prox = pr: es = False ‘Si la media es prima, lo hemos encontrado
Wend
proxprimrol = prox
End Function

En esta función nos hemos arriesgado a que se entre en un bucle sin fin si no se encuentra el siguiente primo, pero confiamos en la conjetura de que todo primo encontrará su pareja.

En una primera exploración podemos observar que todos los primos se encadenan con otros mayores, y que se forman cadenas que al principio son independientes, pero que al final aparecen términos comunes. En la siguiente tabla están ordenados por columnas:


Calcula mentalmente la media entre dos consecutivos de una misma columna y verás que el resultado es primo: (61+73)/2=67, (109+193/2=151…

Observamos que los primos 3, 5, 11, 13, 31, 37 y 41 inician cadenas independientes (al principio), pero algunas de ellas desembocan en un elemento común. Por ejemplo. El 53 tiene como antecesores el 29 y el 41, ya que (29+53)/2=41, primo, y (41+53)/2=47, también primo. No se incluye el 2 porque su carácter par lo invalida para esta operación.

Otros primos, como el 7, tienen antecedentes, y no inician cadena (ya que (3+7)/2=5, primo).

Elementos primarios

¿Qué números primos no tienen antecedentes? Conocemos por la tabla que parecen no tener el 3, 5, 11 y 13 (luego veremos que no es cierto, pues el 11 sí tiene antecedente 3). A aquellos que no provienen de otros en la cadena les llamaremos primarios. Un número primo será de este tipo si no forma media prima con ninguno de los primos menores que él. Como siempre, resolveremos esta cuestión con una función, que recorra los primos menores que el dado y busque si forman media prima con él. Puede ser esta:

Public Function esprimario(p) As Boolean 
Dim prev
Dim espr As Boolean

If Not esprimo(p) Then esprimario = False: Exit Function
prev = primant(p) ‘comenzamos la búsqueda con el primo anterior
espr = True
While espr And prev > 0
If esprimo((prev + p) / 2) Then espr = False ‘Si aparece media prima, no es primario
prev = primant(prev) ‘seguimos descendiendo en la lista de primos
Wend
esprimario = espr
End Function

Al aplicar esta función nos llevamos una sorpresa: los únicos primarios que resultan son 3, 5, 13 y 37. Hemos buscado en números mayores sin encontrar ningún otro. Los demás poseen un antecedente en la cadena. Si no aparecen claramente en la tabla anterior es porque se construyó con primos de este tipo consecutivos, y no han de serlo. Por ejemplo, un antecedente de 11 es el 3, porque (11+3)/2=7 es primo. Si modificamos ligeramente la función anterior, podemos construir una tabla de antecedentes mayores, los más próximos al primo dado:



Figuran con un cero los elementos primarios. Para quienes se interesen por la programación, adjuntamos su código:

Public Function antec(p)
Dim prev, espr

If Not esprimo(p) Then antec = 0: Exit Function
prev = primant(p)
espr = 0
While espr = 0 And prev > 0
If esprimo((prev + p) / 2) Then espr = prev
prev = primant(prev)
Wend
antec = espr
End Function

Al recorrer la tabla descubrimos algo muy interesante, y es que si formamos cadenas descendentes con cada primo y su antecedente mayor, al final desembocaremos en 3, 5, 13 o 37. Por ejemplo, elegimos un elemento de la tabla, sea el 109. Buscando en la misma iremos descendiendo mediante antecedentes: 109 – 97 – 61 – 13. Otro: 101 – 41 – 17 – 5.

Conjetura: Si se forma una cadena a partir de un número primo insertando en cada tramo el máximo primo que forma media prima con el anterior, el proceso terminará en 3, 5, 13 o 37. 

Esta propiedad divide a los números primos en cuatro clases, según sea el final de su cadena de antecedentes. Estas clases son disjuntas, porque el final es único, y abarcan todos los números primos salvo 3, 5, 13 o 37 o bien otro mayor que se descubra algún día como contraejemplo de la conjetura. Aquí las tienes:



La primera está formada por todos los primos que se encadenan hasta el 3, y son todos del tipo 4K+3. Las dos siguientes desembocan en 5 y 13 respectivamente. Su tipo es 4K+1. La cuarta clase, sorprendentemente, sólo está formada por el número 37. Ningún primo superior parece terminar su serie de antecedentes en el 37

Como observación empírica, destacamos que las diferencias entre términos en la primera clase son menores (en promedio) que las de la segunda y las de esta con la tercera.

Si a cada elemento de estas cuatro clases le calculamos la media con su antecedente, no aparecen regularidades en los tipos 4K+1 y 4K+3.

Semiprimos arolmar maximales

Si en las clases anteriores multiplicamos cada primo con su antecedente, resultan números arolmar semiprimos maximales, es decir, los mayores engendrados por una media prima.



La cuarta clase no puede producir semiprimos. En la tabla tienes los primeros en las tres primeras clases. Comprobarás que no están todos los arolmar semiprimos.

Al igual que los primos arolmar presentaban una correspondencia biyectiva con los números primos (ver entrada anterior), y eran elementos minimales, esto no se da con los maximales, pues no todo doble de un número primo se puede descomponer en un primo sumado con su antecedente.

Grado de equilibrio en un número arolmar

Las ideas que hemos estado manejando, de primos arolmar y semiprimos maximales podrían concretarse en un índice entre 0 y 1 que midiera el grado de equilibrio existente entre los dos primos constituyentes de un semiprimo arolmar. El cálculo que nos parece más adecuado es el del cociente entre el primo menor y el mayor. Así, los semiprimos maximales tendrán un índice cercano a 1, y los primos arolmar presentarán un valor pequeño. Aquí tienes los índices de los primeros semiprimos arolmar:


Entre los semiprimos arolmar menores que 10000 el más equilibrado (maximal en su clase de suma de factores 146) es el 5293=67*79, con una media prima de 73 y el más desequilibrado 9993=3*3331, de media prima 1667.


jueves, 12 de mayo de 2016

Rachas de dígitos


En Combinatoria es interesante el problema de las rachas, conjuntos de elementos consecutivos iguales. Por ejemplo, el conjunto AABBCDDDDEE posee cinco rachas; AA, BB, C, DDDD y EE. No se impone ninguna condición a la longitud de cada racha.

Aquí estudiaremos algunas rachas de dígitos que puede presentar un número entero. Distinguiremos tres tipos con sus estadísticas correspondientes y después particularizaremos en algunos casos, como primos, cuadrados o triangulares.

Tipos de racheado

Un número puede presentar los dígitos agrupados, es decir, con rachas todas de longitud mayor que 1, como pueden ser 3366677 o 112222. Le llamaremos número de tipo 1, o con “dígitos agrupados”.

Puede ocurrir que ningún dígito se agrupe con el siguiente, que equivale a afirmar que todas las rachas tienen longitud 1, como en 345643. Obsérvese que no se prohíbe que los dígitos se repitan, siempre que no sean consecutivos. Serán estos números los del tipo 2, o de “dígitos aislados”

Los restantes números presentarán rachas de longitud 1 y otras mayores, como en el caso de 1442 o 54322111. Les asignaremos el tipo 3, que es el menos interesante.

Independientemente de consideraciones combinatorias, podemos evaluar de forma aproximada la frecuencia que presenta cada uno de los casos. Usaremos una función en Visual Basic de hoja de cálculo, que, por su relativa complejidad, explicamos al final de la entrada.

El algoritmo que usa funciona en dos fases:

(1) Búsqueda de las rachas existentes entre los dígitos del número entero. En el listado del final puedes ver que se almacenan en una matriz r.

(2) Estudio de la longitud mínima y máxima de racha existente en el número.
Si la mínima longitud no es 1, los dígitos se presentan agrupados, y el entero será de tipo 1. Si la máxima es 1, no habrá agrupamientos, y el tipo será 2. Los restantes ejemplos serán de tipo 3.

Si te apetece, sigue estas fases en el listado VBA del final.

Frecuencias de los tipos

Mediante la función citada  y un contador adecuado, hemos observado que las frecuencias en los distintos intervalos son bastante parecidas a las de la tabla, obtenida en el intervalo (10000, 100000)



Se observa que son muy escasos los de tipo 1, con todos los dígitos agrupados, un 0,19%, los más frecuentes los del tipo 2, con dígitos aislados, con un 65,61%, quedando los del tipo mixto en una frecuencia intermedia del 34,20%. En otros intervalos las frecuencias son semejantes, ya que están basadas en propiedades combinatorias.

Justificar estas frecuencias puede resultar complejo, pero en el caso del tipo 1 no es difícil. Son 171 porque de dos cifras los únicos agrupados son 11, 22, 33,…99. Si le añadimos una cifra más, deberá ser idéntica a la última, luego, seguirán siendo 9: 111,222,…,999. Al llegar a cuatro cifras disponemos de dos caminos para construir los números de tipo 1: O bien añadimos dos cifras iguales por la derecha a los de dos cifras (incluido el cero), con lo que tendríamos 9*10=90 casos, como 1199, 2200,… o bien las añadimos por la izquierda (sin el cero), lo que daría 9*9=81 casos. Sumamos y obtenemos 90+81=171, que es lo que nos da la estadística.

En general, para una racha existen 9 posibilidades si ignoramos el 0. Para dos, 9*9, ya que ambas han de contener dígitos distintos, y para tres rachas, 9*9*9=729. Con una hoja nuestra sobre Combinatoria hemos calculado el número de rachas de cada tipo hasta 7 cifras, quedando esta tabla:



Todas las cantidades están comprobadas: 9 números de tipo 1 de dos cifras, 9 de tres, 90 de cuatro, 171 de cinco, 981 de seis y 2520 de siete.

¿Presentarán los distintos tipos de números frecuencias parecidas? Por ejemplo, ¿existirán más rachas con longitud superior a 1 en los cuadrados?¿y en los primos?...Nos dedicaremos, en plan lúdico, a estudiar diversos casos y observar, si existen, variaciones apreciables en las frecuencias.

Los cuadrados

Por este carácter informal que queremos darle a este estudio, nos limitaremos en todos los casos al intervalo (1, 100000), ya que con él basta para detectar curiosidades.

En ese intervalo sólo aparece el cuadrado 7744=88^2, y las frecuencias son



Prácticamente coinciden con el caso general. No aparece ningún otro cuadrado de ese tipo entre 1 y 500000. Estás invitado a buscar uno. Por cierto, si lo encuentras, deberá terminar en 00 o 44. Razónalo si te apetece.

Los primos

Establecemos el mismo intervalo, para ver si tampoco en este caso se aprecian diferencias importantes. Y no, resultan casi iguales a las anteriores:



Los 15 primos encontrados son: 11, 11177, 11777, 22111, 22277, 22777, 33311, 33377, 44111, 44777, 55333, 55511, 77711, 77999 y 88811. Como ves, son muy atractivos. Puedes ver más en http://oeis.org/A034873

Como en el caso de los cuadrados, sólo unas terminaciones son válidas: 11, 33, 77, 99, como es fácil entender.

Otros casos

Ya vamos sospechando que las frecuencias variarán poco. Lo vemos:

Triangulares

En este caso aumentan algo las frecuencias de tipo 1 y 2 en detrimento del 3:



Los cuatro triangulares de tipo 1 son muy sugestivos: 55, 66, 666, 2211, Tienes más en http://oeis.org/A116055

Oblongos

Como estos números son los dobles de los triangulares, presentan frecuencias similares, también con ligero predominio de los tipos 1 y 2 respecto al conjunto de todos los números.

En el intervalo (1,100000) sólo aparecen tres de tipo 1: 1122=33*34, 4422=66*67 y 9900=99*100. No están publicados los siguientes. Si te atreves…

Pentagonales

Aparecen tres de tipo 1:22, 8855 y 55777.

Pitagóricos

¿Qué longitudes de hipotenusas de triángulos de lados enteros aparecerán de tipo 1?

De este tipo aparecen muchos más, pues estarían entre ellos algunos múltiplos adecuados de 55, 111 y 100, que presentan rachas de al menos dos elementos. Estos son los primeros, con sus correspondientes catetos:



Aquí lo dejamos. Podemos analizar algunos más, pero vemos que las proporciones no cambian mucho. Es tan imprevisible la aparición de las cifras en los cálculos previos, que al reunir las frecuencias se llega a resultados muy similares.

Aquí tienes una tabla resumen:



ANEXO

Función para encontrar el tipo de agrupamiento de dígitos

Public Function tipoagrupa(n) 
Dim i, t, nr, l, maxr, minr
Dim r(20) ‘Esta variable contendrá las rachas
Dim sr$, c$, d$

sr$ = Str$(n)
sr$ = Right$(sr$, Len(sr$) - 1) + "$" ‘Convierte el número en un string adecuado
nr = 0
maxr = 1: minr = 1000 ‘Máxima y mínima longitud de racha
For i = 1 To 20: r(i) = 0: Next i
i = 1
l = Len(sr$)
While i < l ‘La variable i recorre los dígitos
nr = nr + 1
r(nr) = 1
c$ = Mid$(sr$, i, 1)
d$ = Mid$(sr$, i + 1, 1)
While c$ = d$ ‘Un dígito es igual al siguiente. Hay racha mayor que 1
r(nr) = r(nr) + 1
i = i + 1
c$ = Mid$(sr$, i, 1)
d$ = Mid$(sr$, i + 1, 1)
Wend
If r(nr) > maxr Then maxr = r(nr) ‘Toma nota de la racha máxima
If r(nr) < minr Then minr = r(nr) ‘Toma nota de la racha mínima
i = i + 1
Wend

t = 3 'En principio suponemos que el tipo es 3, caso mixto
If minr > 1 Then t = 1 'Tipo 1. Todos agrupados, porque las rachas son mayores que 1
If maxr = 1 Then t = 2  'Tipo 2. Todos aislados y rachas unitarias
tipoagrupa = t
End Function

miércoles, 4 de mayo de 2016

“Palprimos” (primos palindrómicos)

Tomamos la palabra palprimo directamente del inglés, pero si te apetece, nómbralos como primos palindrómicos.

Según se deduce del nombre, los palprimos son números primos capicúas o palindrómicos (nos limitaremos al sistema de numeración en base 10 por ahora), es decir, que se leen igual de izquierda a derecha que de derecha a izquierda.

Los números de una sola cifra se suelen considerar palindrómicos (en realidad, cumplen la definición), por lo que es fácil entender que los primeros palprimos son

2, 3, 5, 7, 11, 101, 131, 151, 181, 191, 313, 353, 373, 383, 727, 757, 787, 797, 919, 929, 10301, 10501, 10601, 11311, 11411, 12421, 12721,…
(https://oeis.org/A002385)

Para identificarlos con hoja de cálculo necesitaremos la función ESPRIMO y la ESCAPICUA. Disponemos de las dos en nuestra colección, por lo que nos limitaremos a copiarlas aquí.

Public Function esprimo(a) As Boolean
Dim n, r
Dim es As Boolean

'Devuelve true si es primo.
es = False
If a = Int(a) Then  ‘Ha de ser entero
If a = 1 Then es = False ‘Casos particulares
If a = 2 Then es = True
If a > 2 Then
If a / 2 = Int(a / 2) Then ‘Descarta los pares
es = False
Else
    n = 3: es = True: r = Sqr(a) ‘Busca posibles divisores
    While n <= r And es = True
    If a / n = Int(a / n) Then es = False ‘Si se encuentra un divisor se declara compuesto
    n = n + 2
    Wend
End If
End If
End If
esprimo = es

End Function


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

  'Convierte el número en texto para lograr más rapidez. Devuelve VERDADERO si es palindrómico o capicúa
  
auxi = haztexto(n) ‘Se puede usar la función STR$ del Basic
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 ‘Va comparando cada dígito con su simétrico
  i = i + 1
  Wend
End If
escapicua = c
End Function

Con estas dos funciones podemos encontrar palprimos en cualquier intervalo, contarlos u operar con ellos. Por ejemplo, con esta rutina podemos destacar los existentes en un intervalo:

Sub buscapalprimos()

Dim i,j
i = ActiveWorkbook.Sheets(1).Cells(6, 7).Value ‘Suponemos que el intervalo está
j = ActiveWorkbook.Sheets(1).Cells(6, 8).Value ‘alojado en las celdas G6 y H6.

fila = 15 ‘Inicio del listado

For i = j To l
If esprimo(i) And escapicua(i) Then
ActiveWorkbook.Sheets(1).Cells(fila, 6).Value = i ‘Se presenta e incrementamos la fila
fila = fila + 1
End If
Next i
End Sub

Aquí tienes el listado de los palprimos comprendidos entre 10000 y 11000:

10301
10501
10601

Como ves, muy pocos. Entre 1000000 y 1100000 sólo encontramos estos:

1003001
1008001
1022201
1028201
1035301
1043401
1055501
1062601
1065601
1074701
1082801
1085801
1092901
1093901

Antes de seguir adelante, quizás te hayas percatado de que no existen palprimos con un número de cifras par, porque entonces serían múltiplos de 11, y no primos, como le ocurre a 1771, que es igual a 7*11*23. Así que siempre nos referiremos a un número impar de cifras.

Se ha conjeturado que existen infinitos primos palídrómicos. Unos de los mayores encontrados es


(Tomado de Wikipedia)

Entre los mayores conocidos se encuentra el número de Belfegor, 1000000000000066600000000000001, llamado así por sus referencias al número de la bestia, 666.

La anterior rutina para destacar palprimos en un intervalo se puede transformar en una función que los cuente simplemente, sin tener que mostrarlos. Su estructura sería muy similar:

 Public Function cuentapalprimos(m, n)

Dim i, c
c = 0
For i = m To n
If esprimo(i) And escapicua(i) Then c = c + 1
Next i
cuentapalprimos = c
End Function

Con esta función comprobamos que entre 10000 y 11000 existen tres, que son los que presentamos arriba, y entre 1000000 y 1100000, los catorce reseñados.

Con un poco de paciencia se puede obtener el número de palprimos para cada número de cifras: De tres cifras existen 15, de cinco 93 y de siete 668. El resto requiere de otras herramientas. Tienes los datos en http://oeis.org/A016115

Suma de inversos

Se ha comprobado que la suma de inversos de los primeros palprimos converge a una constante cuyos primeros decimales son 1.32398… Pondremos a prueba la capacidad de nuestra hoja de cálculo: buscaremos los primeros con la rutina presentada más arriba, hallaremos sus inversos y posteriormente la suma de estos. Como la tabla resultará larga, copiaremos sólo los primeros y últimos términos:





Podíamos seguir con más cifras, pero ya vemos la tendencia a la constante límite. Con hoja de cálculo es preferible dejarlo aquí.

Hemos probado con los inversos de los cuadrados y ha aparecido una convergencia más fuerte (como era de esperar) hacia la constante 0,43008339502. Puedes probar otras posibilidades.