miércoles, 13 de noviembre de 2013

¿De dónde vengo? (2) – Sumamos divisores

Proseguimos nuestra búsqueda de esa especie de función inversa que hemos rotulado con MF en la anterior entrada. Ahora estudiaremos la suma de divisores.

Recuerda que la función SIGMA suma todos los divisores de un número. Generalizaciones de la misma son las funciones SIGMA_K, que suman los divisores elevados al exponente K (Ver http://hojaynumeros.blogspot.com.es/2011/02/la-familia-de-las-sigmas-1.html y la entrada siguiente). Cualquier valor elegido al azar no tiene por qué ser el resultado de este tipo de sumas. De hecho, se sabe ya qué valores puede tomar SIGMA(N) y cuáles no.

No tienen solución los incluidos en http://oeis.org/A007369: 2, 5, 9, 10, 11, 16, 17, 19, 21, 22, 23… La función SIGMA no puede tener nunca estos valores. No existe ningún número cuya suma de divisores sea 17, 19 o 21.

Sí la tienen estos otros (http://oeis.org/A002191): 1, 3, 4, 6, 7, 8, 12, 13, 14, 15, 18, 20…Por ejemplo, el valor 13 se corresponde con la suma de divisores de 9: 9+3+1=13.

Para reproducir esta situación podemos acudir a la siguiente consideración: Para un N dado, SIGMA(N)³1+N, porque ese sería el valor más desfavorable, que se da cuando N es primo. En cualquier otra situación, aparecerán otros divisores, superando así el valor 1+N. así que, N£SIGMA(N)-1. Por tanto, si nos dan un valor fijo K=SIGMA(N),  bastará buscar N en el rango 1…K-1. Esto nos lleva a que el mejor método entre los que propusimos en  la anterior entrada sea el de búsqueda acotada.

Así lo hemos intentado con hoja de cálculo, llegando a la misma conclusión que las dos sucesiones citadas de OEIS:

Tienen un valor determinado para MF_SIGMA(N) los números
1, 3, 4, 6, 7, 8, 12, 13, 14, 15, 18, 20…http://oeis.org/A002191

Puedes comprobarlo en esta tabla obtenida con hoja de cálculo:



Observa que cuando la diferencia entre N y MF_SIGMA(N) es 1, el número de la segunda columna es primo.

En la tabla se intuye que los dobles de los perfectos, como el 12, coinciden con la suma de divisores de su mitad, el 6.

Hemos usado la función SIGMA definida por nosotros. Si no tienes acceso a ella puedes usar el siguiente código para obtener los mismos resultados. Como advertimos a menudo, estos códigos se trasladan fácilmente a otros lenguajes de programación. Este que ofrecemos devuelve un cero si MF_SIGMA no está definida para ese número. No es muy eficiente, pero sí fácil de entender:

Public Function mfsigma(n)
Dim vale As Boolean
Dim k, a, s, j

vale = True
k = 1
a = 0
While vale And k <= n
s = 0
For j = 1 To k
If k / j = k \ j Then s = s + j ‘Este FOR-NEXT calcula la función sigma de k
Next j
If s = n Then a = k: vale = False ' comprueba si SIGMA coincide con el argumento n
k = k + 1
Wend
mfsigma = a
End Function

Con esta función puedes determinar si un número coincide con la función SIGMA de otro. Por ejemplo MF_SIGMA(2014)=0, luego no existe ningún otro número cuya suma de divisores sea 2014. Si embargo, MF_SIGMA(2012)=2011, porque este último es primo, y MF_SIGMA(2016)=660, porque

2016= 660+330+220+165+132+110+66+60+55+44+33+30+22+20+15+12+11+10+6+5+4+3+2+ 1

Puedes usar también la función definida en PARI

mfsigma1(n)={k=0;while(k<=n&&sumdiv(k, d, d)<>n, k=k+1);if(k>=n,k=0); return(k)}
{print(mfsigma1(20))}

Con él, cambiando el valor de 20 por otro cualquiera, puedes encontrar su MF_SIGMA

Las otras sigmas

Si sumamos los cuadrados de los divisores de un número nos resulta la función SIGMA_2, con los cubos SIGMA_3 y, en general, podemos definir toda la familia para exponentes mayores.

¿Qué números coinciden con la suma de los cuadrados de los divisores de otros?

Repetimos todo el trabajo. Basta sustituir la línea de código

If k / j = k \ j Then s = s + j

Por esta otra

If k / j = k \ j Then s = s + j^2

Obtenemos así la lista de números cuya MF_SIGMA_2 está definida:

1, 5, 10, 21, 26, 50, 85, 91, 122, 130, 170, 210, 250, 260, 290, 341, 362, 455, 500, 530, 546, 610, 651, 820, 842, 850, 962, 1050, 1220, 1300, 1365, 1370, 1450, 1682, 1700, 1810, 1850, 1911, 2210, 2366, 2451, 2500, 2562…

Entre ellos están los de la forma 1+p^2 con p primo.

Figuran en http://oeis.org/A001157, pero con algunos repetidos respecto a nuestra sucesión.

En PARI

mfsigma2(n)={k=0;while(k<=n&&sumdiv(k, d, d*d)<>n, k=k+1);if(k>=n,k=0); return(k)}

Como complemento de ella, podemos encontrar los números cuyo valor de sigma_2 coincide con los valores de la anterior sucesión.

1, 2, 3, 4, 5, 6, 8, 9, 11, 10, 13, 12, 14, 15, 17, 16, 19, 18, 21, 23, 20, 22, 25, 27, 29, 24, 31, 28, 33, 30, 32, 37, 34, 41, 39, 38, 43, 36, 40, 45, 49, 42, 44, 46, 53, 51, 55, 50, 48, 59, 52, 57, 61, 54, 58, 56, 65, 67, 63, 62, 71, 69, 73, 60, 64, 68, 66, 79, 70, 75, 74, 83, 81, 85, 76, 72, 89, 82, 87, 78, 80, 86, 97, 95, 93…

Están casi todos los números. Los que faltan no son los mínimos con cada valor de la función. Por ejemplo, el 7 no está porque sigma_2(7)=50 y sigma_2(6)=50, luego ha de figurar el 6 y no el 7.

Para SIGMA_3

Estos son los valores que puede tomar sigma_3. Como se ve, con frecuencia muy baja.

1, 9, 28, 73, 126, 252, 344, 585, 757, 1134, 1332, 2044, 2198, 3096, 3528, 4681, 4914, 6813, 6860,…
http://oeis.org/A001158

En PARI

Mfsigma3(n)={k=0;while(k<=n&&sumdiv(k, d, d^3)<>n, k=k+1);if(k>=n,k=0); return(k)}

Puedes encontrar casos similares en  http://oeis.org/A063972 para divisores unitarios y en  http://oeis.org/A070015 para las partes alícuotas.

No hay comentarios: