miércoles, 9 de diciembre de 2015

Volvemos a los números "arolmar" (1) Historia y generación


Esta entrada y otras siguientes que aparecerán sobre el mismo tema suponen un regreso a una sucesión que ideamos en 2011, cuya originalidad atrajo a nuestro colaborador Rafael Parra, que fue quien le dio el nombre de “números arolmar”. Tanto él como el autor publicaron sobre el tema en OEIS (The On-line Encyclopedia of integer sequences). Ahora, transcurridos cuatro años, hemos querido desarrollar con tranquilidad la generación de esos números, así como sus propiedades, curiosidades y otras sucesiones afines.

No busque el lector profundidad en esta serie. Se trata tan sólo de exprimir a nivel descriptivo las posibilidades que nos ofrece esta sucesión, sin plantearnos otros objetivos.

Es posible que la publicación no se efectúe de forma consecutiva, a fin de no bloquear el blog si surgen cuestiones de actualidad. Pueden aparecer siete o más entradas distintas.

Historia

Con fecha 23/2/2011 se publicó en este blog una pequeña entrada titulada “Primos por todas partes” (http://hojaynumeros.blogspot.com.es/2011/02/primos-por-todas-partes.html) En ella se presentaba la sucesión

21, 33, 57, 69, 85, 93, 105, 129, 133, 145, 177, 195,…

Son números compuestos que tienen todos sus factores primos distintos (son números libres de cuadrados) y el promedio de esos factores es un número primo.

Por ejemplo 145=5*29, y el promedio de ambos es (5+29)/2= 17, que es primo.
195=3*5*13, y el promedio es (3+5+13)/3 = 21/3 = 7, también primo.

Posteriormente se publicó esta sucesión en OEIS (https://oeis.org/A187073), y Rafael Parra Machío les dio el nombre de números arolmar, dedicándoles un estudio publicado en http://hojamat.es/parra/arolmar.pdf

Dado el interés del tema, ampliaremos la búsqueda de esos números y estudiaremos algunos detalles más sobre esta sucesión y otras afines. Nos moveremos en un nivel de profundidad de tipo medio, que es el que domina el autor, sin pasar a cuestiones de criptosistemas, muy bien explicados en el documento de Rafael Parra. Nuestro objetivo será el de ampliar las formas de generarlos, estudiar alguna subsucesión y buscar números con propiedades similares.

En esta primera entrada reflexionaremos sobre su generación con varias herramientas.

Generación de la sucesión

Con el Buscador de Naturales

En el documento http://www.hojamat.es/publicaciones/Hojanum3.pdf publicamos la forma de encontrar estos números con nuestro Buscador de números naturales (http://www.hojamat.es/sindecimales/divisibilidad/herramientas/herrdiv.htm#global)

Basta leer las cuatro líneas de condiciones necesarias para entender la gran potencia de este buscador:



Si lo descargas y escribes las cuatro condiciones en la zona dedicada a ellas obtendrás los primeros términos de la sucesión:



En la primera columna figuran los términos y en la segunda el número primo promedio de los factores primos de los mismos.

La primera condición exige que el promedio de factores primos sea también primo. La segunda lo presenta. La tercera exige que esté libre de cuadrados, y la cuarta que no sea primo.

Con el Basic de las hojas

Al ser el Buscador una herramienta no contrastada, puede ser bueno comprobar los resultados con otros instrumentos. En este blog solemos usar el Basic de las hojas de cálculo. Si tenemos definidas las funciones pertinentes, la búsqueda se reduce a un simple bucle FOR-NEXT

Necesitamos las funciones

PARTECUAD

Te devuelve la parte cuadrada de un número natural. Si esa parte vale 1, es que el número es libre de cuadrados. La tienes en

http://hojaynumeros.blogspot.com.es/2011/05/parte-cuadrada-y-parte-libre-solucion.html

Se puede encontrar escribiendo PARTECUAD en Google.

ESPRIMO

La hemos usado mucho en este blog. La puedes encontrar en nuestra hoja sobre conjeturas

http://www.hojamat.es/sindecimales/divisibilidad/herramientas/herrdiv.htm#global

SOPF y F_OMEGA

(o SOPFR Y BIGOMEGA, que en libres de cuadrados son equivalentes)

La primera suma los factores y la segunda los cuenta. Su cociente dará el promedio.
En la entrada http://hojaynumeros.blogspot.com.es/2013/11/de-donde-vengo-3-sumamos-y-contamos.html damos algunas ideas sobre ellas.

Bucle

Con esas funciones y alguna otra podemos ya construir nuestro bucle de búsqueda:

For i = 2 to 1000
If Not esprimo(i) And partecuad(i) = 1 Then
b = sopf(i) / f_omega(i)
If esentero(b) And esprimo(b) Then msgbox(i)
End If
Next i

Implementando un programa similar en una hoja en la que los resultados aparecen bien ordenados, obtenemos los mismos resultados que con el Buscador:



En la primera columna figuran los números arolmar y en la segunda el promedio (primo) de sus factores primos.

Existen infinitos números arolmar, según veremos en la próxima entrada, siempre que se admita la conjetura de Goldbach. En el gráfico de los primeros de ellos (hasta una cota de 2000) se percibe una clara tendencia lineal, que en este intervalo presenta una pendiente aproximada de 17 con un ajuste de nivel 0,9971. Podemos esperar un número arolmar en cada incremento de 17.



Más incidencias presenta la distribución de los números primos que son promedio de sus factores:



En el gráfico distinguimos fácilmente varias líneas de tendencia ¿Adivinas la causa? Pues sí, depende del número de factores que intervengan en el promedio. La línea superior corresponden a los números arolmar que son semiprimos, la siguiente a los que tienen tres factores, y las de más abajo, que llegan a hacerse indistinguibles, a los números que poseen más factores aún. Como también veremos en utra entrada, este gráfico recorre todos los primeros números primos.

Código PARI

En la sucesión A187073 figura un código generador debido a Charles R Greathouse IV

 isA187073(n)=my(f=factor(n)); #f[, 1]>1&vecmax(f[, 2])==1&denominator(f=sum(i=1, #f[, 1], f[i, 1])/#f[, 1])==1&isprime(f) 

Como puede resultar incomprensible, por compacto, lo sustituiremos por otro más sencillo (y largo), pero que nos permitirá ir explicando las funciones que necesitamos:

freesqrcomp(n)=issquarefree(n)&&!isprime(n)
sopf(n)= { local(f, s=0); f=factor(n); for(i=1, matsize(f)[1], s+=f[i, 1]); return(s) }
averg(n)={local(s); s=sopf(n)/omega(n); return(s)}
{  for (n=4, 10^3,  if(freesqrcomp(n), m=averg(n);if(m==truncate(m),if(isprime(m), print1(n, ", ")))))}

En él se van implementando las condiciones exigidas a los números buscados.

Carácter de número compuesto libre de cuadrados:

Basta definir esta función.

freesqrcomp(n)=issquarefree(n)&&!isprime(n)

En ella exigimos que sea libre de cuadrados (issquarefree) y que no sea primo (!isprime(n)). El signo “!” representa la conectiva NO y && la conjunción Y. Si escribes a continuación “{print(freesqrcomp(30))}” la respuesta será 1, que significa VERDADERO, pues 30=2*3*5 es compuesto y libre de cuadrados. Ya tenemos el primer paso: identificar los números de este tipo.

Función SOPF

sopf(n)= { local(f, s=0); f=factor(n); for(i=1, matsize(f)[1], s+=f[i, 1]); return(s) }

Esta parte es más difícil de entender. Esta función suma los factores primos de un número sin contar las repeticiones. En PARI la matriz (o vector) factor(n) contiene los factores primos en la primera columna y sus exponentes en la segunda. La variable s suma sólo los factores primos, pero no sus exponentes. Por eso se escribe s+=f[i, 1])

Promedio de los factores primos

averg(n)={local(s); s=sopf(n)/omega(n); return(s)}

Se basa en la función anterior SOPF y en OMEGA, que cuenta los factores primos sin repetición. Por tanto, su cociente es el promedio de los factores primos.

Bucle de búsqueda

{  for (n=4, 10^3,  if(freesqrcomp(n), m=averg(n);if(m==truncate(m),if(isprime(m), print1(n, ", ")))))}

Lo que queda es ya recorrer los números (en el ejemplo desde 4 hasta 1000) e imprimir aquellos cuyo promedio de factores primos es entero (m==truncate(m)) y primo (isprime(m))

Aquí tienes la pantalla con el resultado:


Hemos querido detenernos en esta generación en PARI porque usaremos más adelante códigos similares.

Por último, incluimos la función ESAROLMAR, que nos devuelve VERDADERO si su argumento es un número arolmar. Con ella se pueden emprender otras búsquedas y encontrar curiosidades.

Función ESAROLMAR

Con el Basic de las hojas de cálculo podría tener esta estructura:

Public Function esarolmar(n)
Dim es As Boolean
Dim b

es = False
If Not esprimo(n) And partecuad(n) = 1 Then
b = sopf(n) / f_omega(n)
If esentero(b) And esprimo(b) Then es = True
End If
esarolmar = es

End Function

La segunda línea exige que el número no sea primo (Not esprimo(n))y que sí sea libre de cuadrados, o bien que su parte cuadrada sea igual a 1 (partecuad(n) = 1), que son las dos condiciones iniciales de la definición de número arolmar.

En la siguiente se calcula la media de los factores primos, dividiendo su suma (sopf(n)) entre su número (f_omega(n)) y, por último, se exige que el resultado sea entero y primo.

La versión con PARI necesita la definición progresiva de varias funciones:

freesqrcomp(n)=issquarefree(n)&&!isprime(n)
sopf(n)= { local(f, s=0); f=factor(n); for(i=1, matsize(f)[1], s+=f[i, 1]); return(s) }
averg(n)={local(s); s=sopf(n)/omega(n); return(s)}
esarolmar(n)={local(a=averg(n),s);s=freesqrcomp(n)&&a==truncate(a)&&isprime(a); return(s)}
{for(i=2,1000,if(esarolmar(i),print(i)))}

La última línea presenta todos los números arolmar hasta el 1000.

En la siguiente entrada sobre este tema estudiaremos el carácter impar de estos números y cómo aparecen sus diferencias (arolmar gemelos, cousin, sexy,...)

Recuerda que esta serie no se publicará de forma consecutiva. Intercalaremos otros temas y para el verano resumiremos todo en una publicación,