martes, 23 de abril de 2024

Hipotenusas de cuaternas pitagóricas

Una cuaterna pitagórica es la expresión algebraica del teorema de Pitágoras en tres dimensiones, es decir, un conjunto de cuatro números enteros positivos a, b, c y d que cumplen:

Para estudiar bien este concepto, basta visitar, por ejemplo.

https://es.wikipedia.org/wiki/Cuaterna_pitag%C3%B3rica

https://mathworld.wolfram.com/PythagoreanQuadruple.html

En estas páginas y otras similares se encuentran todas las propiedades interesantes de estas cuaternas. Aquí nos centraremos en la hipotenusa d. Más concretamente, dado un número N cualquiera, nos interesarán las posibilidades de expresarlo como N2=a2+b2+c2.

No distinguiremos entre las cuaternas primitivas y las que no lo son, ni usaremos la generalización a números enteros. Nuestro interés será más algorítmico que algebraico. Por eso, recorreremos algunas herramientas para ver sus posibilidades, sacando de cada una las propiedades oportunas.

Uso de la herramienta Cartesius

Este problema, por su carácter combinatorio implícito, es abordable con nuestra herramienta Cartesius, que produce todos los productos cartesianos de varios conjuntos sometidos a ciertas condiciones. En este caso, los conjuntos son tres, formados por los primeros cuadrados, para representar a a2, b2 y c2, y la condición es que su suma coincida con N2. Lo explicaremos con un ejemplo, el de N=35.

Para resolver la cuestión emplearemos las siguientes condiciones:


Las estudiamos una a una:

xtotal=3

Indica que combinaremos tres conjuntos. Aquí serían a2, b2 y c2

xt=1..1224

Damos una cota a cada conjunto de 352-1=1224, para evitar ceros

xt=filtro(cuadrado)

Cada conjunto se restringirá a los cuadrados

suma=1225

La suma deberá ser 352

Creciente

Se exigen soluciones con los términos crecientes para evitar repeticiones.

Con el botón Iniciar, o el Reiterar de la siguiente hoja “Producto” obtenemos todas las soluciones.

Resultan cinco posibilidades, pero expresadas como cuadrados. Como las hojas de cálculo te permiten retoques posteriores, bastará usar la función RAIZ para encontrar sus bases, los valores de a, b y c. Incluso se pueden cambiar los rótulos y los fondos:

Hay que advertir, antes de seguir, que en un equipo informático doméstico estos cálculos pueden tardar, en esta época en la que deseamos respuestas rápidas. Todo lo que implique desarrollos combinatorios se ralentizará inevitablemente.

Cartesius es una herramienta potente y de resultados claros, aunque la redacción de las condiciones puede resultar compleja. Por eso existe una Guía para su uso en

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

Si deseamos más versatilidad, como efectuar el recuento de las soluciones, expresarlas en modo texto o aplicarles un Buscador, es preferible acudir, como hemos decidido tantas veces, a la construcción de una función en VBasic, para su uso en Excel y Calc.

Función de búsqueda

Function espitag3(n) As String ‘Da como solución un texto
Dim k, p, d, k1, p1, d1, cuenta
Dim s$

s = "" ‘Contenedor de la solución
cuenta = 0 ‘Número de soluciones
k = 1: p = 3 ‘Variables para formar cuadrados
While k <= n * n / 2
d = n * n – k ‘N^2 menos el primer cuadrado
k1 = 1: p1 = 3 ’Inicio del segundo cuadrado
While k1 <= d / 2
d1 = d - k1
If escuad(d1) And d1 >= k1 And k1 >= k Then ‘Hay solución
s = s + " ## " + Str$(Sqr(k)) + "^2+" + Str$(Sqr(k1)) + "^2+" + Str$(Sqr(d1)) + "^2 " ‘Añade una solución
cuenta = cuenta + 1’Incrementa la cuenta
End If
k1 = k1 + p1: p1 = p1 + 2 ‘Avanza el primer cuadrado
Wend
k = k + p: p = p + 2 ‘Avanza el segundo cuadrado
Wend
If s = "" Then s = "NO"
espitag3 = Str$(cuenta) + " : " + s
End Function

Hay que explicar que los dos primeros sumandos cuadrados se generan sumando números impares. Para ello se usa la variable k para contenerlos, y la variable p para los incrementos. Así, para iniciar el primer cuadrado declaramos k=1,p=3, con lo que el primero es 1^2 y el segundo 1+3=2^2. Terminado de analizar un cuadrado, k se incrementa en p, k=k+p, y p se incrementa en 2 para seguir con los impares.

Al final del proceso se inserta la cuenta de soluciones al principio del texto.

Aplicamos esta función al 35:


Obtenemos que son cinco soluciones, y se presentan ya en forma de suma por si las deseamos copiar en otras celdas. Como era de esperar, coinciden con las cinco obtenidas con Cartesius.

El que la suma figure en primer lugar nos permite búsquedas de números con un número determinado de descomposiciones pitagóricas de este tipo. Por ejemplo, en esta tabla figuran aquellos números que admiten dos descomposiciones:


Algoritmo en PARI

Podemos traducir todo al lenguaje PARI. No es fácil de entender el código, que presenta una ventaja, además de funcionar más rápidamente, y es que imprime también las bases de los cuadrados, pero el resultado de la función es la cuenta de las descomposiciones, lo que facilita las búsquedas. En las siguientes líneas puedes consultar el programa creado para encontrar números con descomposición única:

pitag3(n)={my(k=1,p=3,cuenta=0,d,k1,p1,d1);while(k<=n*n/2,d=n*n-k;k1=1;p1=3;while(k1<=d/2,d1=d-K1;if(issquare(d1)&&d1>=k1&&k1>=k,print(sqrtint(k),", ",sqrtint(k1),", ",sqrtint(d1));cuenta+=1);k1=k1+p1;p1=p1+2);k=k+p;p=p+2);cuenta}

for(i=1,1000,if(pitag3(i)==1,print1(i,", ")))

Obtendremos el resultado


En https://oeis.org/A152829 figuran esos números que sólo admiten una solución. Contiene una conjetura de Colin Baker de que, a partir del 13, se cumple que a(n)=2a(n-3). Se puede comprobar en el listado: 26=2*13, 28=2*14, 48=2*24,…

Lo curioso es que en nuestra sucesión de dos descomposiciones también se puede enunciar la misma conjetura:

11, 17, 22, 25, 34, 44, 50, 68, 88, 100,…

En ella 34=2*17, 44=2*22,…

Lo que llama la atención no es que sea el doble, que algo similar ocurre en las ternas pitagóricas, en las que se pueden multiplicar todos los sumandos por un mismo factor, sino que no se interpongan otras soluciones entre un elemento y su doble, además de los dos de la conjetura.

¿Ocurrirá también con los que presentan tres soluciones? Lo vemos:


Efectivamente, ocurre, pero con un salto de cinco en lugar de tres: 30=2*15, 36=2*18,…, es decir, a(n)=2a(n-5)





martes, 16 de abril de 2024

Goldbach con semiprimos

(Ver entradas anteriores sobre números semiprimos)

Al igual que en la conjetura de Goldbach, que descomponemos todo número par en suma de dos primos, aquí podemos intentar un proceso igual con semiprimos, pero sin la condición de que el número sea par. Después intentaremos pasar a más sumandos.

Suma de dos semiprimos

No es difícil, si se posee la función ESSEMIPRIMO, descomponer un número en suma de semiprimos. Además, si consultamos https://oeis.org/A072931,  descubriremos que suelen aparecer soluciones múltiples. Por eso, nos conviene crear una función que devuelva todas las soluciones en modo texto y que se inicie con el número de ellas, para poder abordar búsquedas especiales. Hemos elegido esta:

Function suma2semi$(n)
Dim k, m
Dim s$

m = 0 ‘Número de soluciones
s = "" ’Contenedor de soluciones
For k = 4 To n / 2
If essemiprimo(k) And essemiprimo(n - k) Then
m = m + 1 ‘Hay una nueva solución
s = s + " ## " + ajusta(k) + "+" + ajusta(n - k)
‘ajusta es idéntica a Str$ pero sin espacio
End If
Next k
If m > 0 Then s = ajusta(m) + s ‘Se inserta número de soluciones
suma2semi = s
End Function

Con ella es fácil descomponer un número natural en suma de dos semiprimos. Por ejemplo, en el caso de 88, las soluciones son:

5 ## 6+82 ## 14+74 ## 26+62 ## 33+55 ## 39+49

Vemos que son sólo cinco, como indica el primer dígito

Uso de Cartesius

Nuestra herramienta Cartesius también permite buscar los dos sumandos semiprimos (Descargable desde http://www.hojamat.es/sindecimales/combinatoria/herramientas/herrcomb.htm#cartesius)

En este primer recorte de pantalla podemos observar el planteamiento:

Exige que sean dos los sumandos, desde 1 hasta 88, les aplica el filtro SEMIPRIMO, que la suma sea 88 y sólo devuelve soluciones crecientes, para evitar duplicidades. El resultado lo tenemos en la siguiente captura:

Coincide con los cinco resulatdos obtenidos mediante la función, pero esta es más flexible para búsquedas, por lo que Cartesius nos sirve preferentemente para comprobar.

Números no descomponibles

Si establecemos una búsqueda con la exigencia de que el resultado de la función sea una cadena vacía, obtendremos aquellos números que no admiten esta descomposición en dos semiprimos. El resultado es:

Están publicados en https://oeis.org/A072966, y en ella, T,D, Noe sugiere que no hay más números sin la descomposición exigida (conjetura).

Para más rapidez de cómputo, hemos creado este código en PARI, que determina tan sólo si existe o no suma de dos semiprimos:

sumasemi(n)={my(m=0,k=4);while(k<=n/2&&m==0,if(bigomega(k)==2&&bigomega(n-k)==2,m=1);k+=1);m}

for(i=1,10^4,if(sumasemi(i)==0,print(i)))

Hemos establecido una búsqueda hasta 10000 sin encontrar más soluciones:


Números con más descomposiciones

En la sucesión https://oeis.org/A072931 no aparecen más de 8 soluciones por número. Con nuestras herramientas podemos intentar encontrar los primeros enteros con 8 descomposiciones o más:



Se encuentran tantas, que se comprende la conjetura del 33 como último número sin soluciones.

El primer número con veinte descomposiciones es el 320. Se entiende entonces que no hay que avanzar mucho para que el número de soluciones aumente velozmente.

Descomposición en tres semiprimos

Se puede ampliar la función SUMA2SEMI a tres sumandos, con lo que resulta un código algo más complejo, porque hemos procurado que los sumandos sean crecientes. Lo copiamos para que su estudio sea algo opcional:

Function suma3semi$(n)
Dim k, m, j, b
Dim s$

m = 0
s = ""
For k = 4 To n
If essemiprimo(k) Then
b = n - k
If b >= k Then
For j = 4 To b
If essemiprimo(j) And essemiprimo(b - j) Then
If b - j >= j And j >= k Then
m = m + 1
s = s + " ## " + ajusta(k) + "+" + ajusta(j) + "+" + ajusta(b - j)
End If
End If
Next j
End If
End If
Next k
If m > 0 Then s = ajusta(m) + s
suma3semi = s
End Function

Con esta función obtenemos las descomposiciones de los primeros números naturales. Hasta el 12 no hay descomposiciones, ya que 12=4+4+4 es la mínima suma. El 13 y el 15 tampoco presentan sumas de tres semiprimos. Los siguientes ya presentan una o varias sumas:

Se puede conjeturar, al igual que en el caso de dos sumandos, que los números siguientes presentarán todos una solución al menos.

Con Cartesius se comprueban estos cálculos:

Incluimos como ejemplo un planteo para el 29:



Resultado:


Se confirma lo obtenido con la función.

No merece la pena pasar a más sumandos, pero con Cartesius podemos abordarlo para un ejemplo concreto, pero suele tardar mucho el proceso en cuanto aumentamos el número de soluciones. Como ejemplo, incluimos las descomposiciones del número 30 en cuatro semiprimos:



 

martes, 9 de abril de 2024

Semiprimos con plantilla

(Ver entradas anteriores sobre números semiprimos)

Los semiprimos del tipo N=pq admiten otros condicionamientos, a los que llamaremos “plantillas”. Por ejemplo, semiprimos del tipo p(p+4). Los de tipo p(p+2), producto de dos primos gemelos, se estudian en otra parte de esta publicación.

N=p(p+4)

Los pares de primos p y p+4 son llamados “cousin” en inglés. En nuestro idioma, lo de “primos primos” no suena bien, pero así se designan en la Wikipedia.

Búsqueda directa

Con el Buscador hemos organizado las condiciones de forma que las soluciones caen en la segunda columna:


Al ser 4 la diferencia entre los dos factores, ambos serán del tipo 4k+1 o bien del 4k+3. En el primer caso, el semiprimo se podrá descomponer en dos sumas de cuadrados, como le ocurre al 12317=109*113, que admite estas dos:

12317=94^2+59^2=101^2+46^2

En los otros casos, como el 4757, no admitirán descomponerse en suma de dos cuadrados, por ser sus factores del tipo 4k+3.

Ayuda algebraica

Para encontrar el valor de p de forma directa nos basamos en dos desigualdades:

N=p(p+4)=p2+4p<p2+4p+4=(p+2)2

N=p(p+4)=p2+4p>p2+2p+1=(p+1)2

Según esto, p será la parte entera de la raíz cuadrada de N menos una unidad:

Por ejemplo, lo aplicamos a 16637, con el lenguaje de las hojas de cálculo:

p=ENTERO(RAIZ(16637)-1)=127, lo que es correcto, porque 16637=127*131

Esto nos permite reconocer semiprimos del tipo p(p+4) sin tener que recorrer los posibles divisores de N. Basta encontrar p, exigir que p y p+4 sean primos y que su producto sea igual a N.

Con este procedimiento hemos averiguado en un tiempo de cálculo razonable, que entre 1000000 y 1100000 solo existe un semiprimo de este tipo:

1022117=1009*1013

Más álgebra

Aún podemos concretar mejor las búsquedas de estos semiprimos. Con este desarrollo lo aclararemos muy bien:

N=pq=p(p+4)=p2+4p

Es fácil ver, según esto, que N+4 es un cuadrado, luego para buscar N podemos restringirnos a los números que equivalen a k2-4 para un valor adecuado de k. Así que, en cualquier búsqueda nos dedicaremos a aquellos números de este tipo, con el consiguiente ahorro de tiempo. Además, si escribimos la equivalencia como p2+4p-N=0, podemos hallar p de forma directa. Sería:

Al ser 4+N cuadrado, la solución es entera, como era de esperar.

Esto simplifica la búsqueda, pues comenzamos por exigir que 4+N sea cuadrado perfecto. Después calculamos p con la fórmula anterior, y bastará exigir que tanto p como p+4 sean primos.

Así lo hemos efectuado en esta búsqueda, en el intervalo (10000,50000):

Como era de esperar, las soluciones coinciden con las obtenidas con otros métodos.

Prescindimos del cuadrado

Si lo que nos interesa es conseguir una lista de soluciones a partir de la unidad, podemos prescindir del carácter de cuadrado de N+4, ya que podemos crear una variable k=1 e irle sumando los impares en cada paso, con lo que se irán construyendo los cuadrados, pues 1+3=4, 4+5=9, 9+7=16,…

Así lo hemos construido en PARI, y nos devuelve, por ejemplo, todas las soluciones menores que 10^6 de forma casi instantánea en su aplicación GP/PARI CALCULATOR, y con cierta rapidez en su web

 https://pari.math.u-bordeaux.fr/gp.html

El código es

k=1;d=3;tope=10^6;while(k<=tope,k=k+d;n=k-4;p=-2+sqrtint(k);if(isprime(p)&&isprime(p+4),print(k-4,", ",p,", ",p+4));d+=2)

El tope, fijado en 10^6, se puede cambiar según sean nuestros objetivos. Los primeros resultados son:

 


Caso general

Los razonamientos útimos sobre el tipo de semiprimo p(p+4) se generalizan fácilmente a N=p(p+2k). Nos limitamos a traducirlos:

N ha de ser del tipo m2-k2, para un valor de m adecuado. Expresado de otra forma, N+k2 ha de ser cuadrado, y al tener raíz cuadrada entera, nos permite despejar p:

Después de este cálculo, basta exigir que tanto p como p+2k sean primos.

Como ejemplo, buscamos todos los semiprimos del tipo p(p+12) entre 10000 y 50000:

 


Por último, estos serían los primeros de seis cifras del tipo p(p+20):

 


 Ha sido entretenido el estudio. Lo dejamos aquí.

Otras plantillas

El tema de plantillas de tipo polinómico es muy extenso, por lo que sólo estudiaremos algunas más como ejemplo.

N=p(2p+1)

Comenzamos con el Buscador para ir iniciando el estudio con algo intuitivo.



Los semiprimos aparecen en la columna de Detalles.

Es claro que p es un primo de Sophie Germain y 2p+1 un primo seguro.

Están publicados en

 https://oeis.org/A156592:

10, 21, 55, 253, 1081, 1711, 3403, 5671, 13861, 15931, 25651, 34453, 60031, 64261, 73153, 108811, 114481, 126253, 158203, 171991, 258121, 351541, 371953, 392941, 482653

Todos estos semiprimos son números triangulares de orden par. La razón es que se pueden escribir como 2n(2n+1)/2=T(2n).

Esta propiedad nos facilita el trabajo, porque un criterio previo sería que N fuera triangular, y tenemos un criterio adecuado, y es que 1+8N sea un cuadrado. En realidad, si no se conociera este criterio, aparecería de forma natural con alguna manipulación algebraica. En efecto, se cumplirá siempre que

2p2+p-N=0

Despejamos p y resulta:

 


Luego para identificar estos números hay que comenzar con que 1+8N sea cuadrado y el numerador múltiplo de 4.

Todo este desarrollo se justifica porque para manejar números grandes no sería eficiente comenzar por la unidad, como hemos procedido con el Buscador, sino que es más útil calcular el valor de p si se cumplen las condiciones.

Así que debemos proceder por verificar los criterios, el de que 1+8N sea cuadrado y el que el valor de p sea entero (en realidad, basta con lo segundo, pero así queda más claro). Después verificaríamos si tanto p como p+2k son primos:

En Vbasic exigiríamos

D=1+8N
P=(-1+RAIZ(D))/4
ESCUAD(D) AND ESENTERO(P)

Después vendría el que tanto P como 2P+1 sea primos.

Procediendo así, obtenemos los mismos resultados que con el Buscador:

Es cierto que este método es muy útil para búsquedas de números grandes. En la imagen puedes consultar el primer semiprimo de este tipo a partir de 10^6:


Plantilla general

Con el ejemplo de los primos de Sophie Germain nos basta para entender el procedimiento adecuado si el segundo primo es función lineal del primero.

Para una plantilla general del tipo N=p(ap+b) ya sabemos cómo proceder:

Planteamos ap2+bp-N=0

Despejamos p:

 


Exigimos que p sea entero, lo que implica que el discriminante sea cuadrado. Si esto se cumple, verificamos que tanto p como ap+b sean primos.

Por ejemplo, buscamos semiprimos de la forma

N=p(3p+2)

Abrimos camino con el Buscador:

 


La ecuación de segundo grado en p sería, en este caso,

3p2+2p-N=0

El discriminante 4+12N ha de ser cuadrado

La solución de la ecuación p ha de ser entera y número primo, así como 3p+2

Con esas condiciones podemos encontrar los semiprimos pedidos:

Hemos realizado la búsqueda entre 50000 y 100000:

 


 


martes, 2 de abril de 2024

Semiprimos vecinos de cuadrados

Los semiprimos vecinos de cuadrados, es decir, del tipo n2+1 y n2-1, presentan propiedades interesantes. A los números de este tipo, sean o no semiprimos, les hemos dedicado algún estudio. Por ejemplo, en un regreso reciente:

https://hojaynumeros.blogspot.com/2022/10/regresos-5-un-cuadrado-y-una-unidad-1.html

Usaremos algún resultado procedente del mismo en el caso particular de los semiprimos.

Semiprimos del tipo n2+1

En primer lugar, localizaremos los primeros semiprimos del tipo n2+1. Usaremos el Buscador de Naturales, que da una imagen bastante clara:

En la imagen se percibe que todos los semiprimos son del tipo N=pq, libres de cuadrados, y es lógico, porque no existen cuadrados que sean números consecutivos.

Era de esperar que ya estuvieran publicados

(ver https://oeis.org/A144255)

En esa página de OEIS se destaca que el menor factor primo de N ha de ser estrictamente menor que n2+1. Además, no todos los números primos pueden ser factores de n2+1.

En la entrada relacionada más arriba se da un listado de ellos. Copiamos unos párrafos:

Según la definición de resto cuadrático, si un compuesto del tipo C=n2+1 tiene un divisor primo p, -1 deberá ser resto cuadrático módulo p, tal como vimos en el caso de los primos. Esto es muy importante, porque ningún número compuesto n2+1 podrá ser múltiplo de p si este no admite resto -1. Sería el caso de 23: ningún elemento de la sucesión http://oeis.org/A002496 será múltiplo de 23.

En la sucesión http://oeis.org/A070303 figuran aquellos primos que no pueden ser divisores de un compuesto del tipo n2+1:

3, 7, 11, 13, 19, 23, 29, 31, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 103, 107, 109, 113, 127,…

Así que, por ejemplo, ningún número múltiplo de 7 puede convertirse en cuadrado al restarle una unidad.

Si recorremos los semiprimos de este tipo comprobaremos que los primos de esta lista no figuran entre sus factores. Son, de hecho, los primos del tipo 4k+3. Sólo los primos del tipo 4k+1 y el 2 pueden ser factores del semiprimo n2+1.

Estos primos del tipo 4k+1 (y el 2) se descomponen en suma de dos cuadrados de forma única, lo que se transmite al semiprimo producto, que se podrá expresar como (a2+b2)(c2+d2). Como curiosidad, hemos construido esos productos para los primeros casos:


Como el semiprimo también es una suma de cuadrados, hemos creado una operación entre tres sumas del mismo tipo.

 Semiprimos del tipo n2-1

En este caso, la única descomposición de un semiprimo deberá ser (n-1)(n+1), es decir, primos gemelos. Si buscamos las primeras soluciones obtendremos:


Tal como era de esperar, todos los factores son primos gemelos. Como este par sigue el tipo 6k-1 y 6k+1 a partir del 5 y 7, el semiprimo presentará el tipo 36k2-1 a partir del 35. También podemos afirmar que el cuadrado “vecino” del semiprimo es múltiplo de 36.

Igualmente, todos los semiprimos serán congruente con 8 (o con -1) módulo 9, y la suma de sus cifras tendrá la misma propiedad. Por ejemplo, en 656099 se cumple que 6+5+6+0+9+9=35, que es congruente con 8 módulo 9.

En la página https://oeis.org/A037074 podemos encontrar varias curiosidades sobre estos números, pero ninguna es de gran trascendencia.

 

 

martes, 26 de marzo de 2024

Números que no son

En esta entrada recorreremos algunos números que no cumplen alguna propiedad especial. No nos detendremos en los obvios, como que los impares no son múltiplos de 2 o que los compuestos son los que no son primos. Como el tema es muy amplio, elegiremos algunos casos interesantes sin extendernos demasiado.

Un ejemplo es la sucesión que publicamos hace tiempo, sobre números impares que no pueden ser suma de un primo y un par de primos gemelos:

https://oeis.org/A329590

Odd numbers k that cannot be expressed as k = p+q+r, with p prime and (q, r) a pair of twin primes.

1, 3, 5, 7, 9, 33, 57, 93, 99, 129, 141, 153, 177, 183, 195, 213, 225, 243, 255, 261, 267, 273, 297, 309, 327, 333, 351, 369, 393, 411, 423, 435, 453, 477, 489, 501, 513, 519, 525, 537, 561, 573, 591, 597, 603, 633, 645, 657, 663, 675, 687, 693, 705, 711, 723

Puedes estudiar ejemplos y programación para esta sucesión contenidos en esa dirección.

Este es el tipo de “negaciones” de tipo medio que presentamos aquí como ejemplo.

Otro ejemplo de publicación nuestra reciente es el de los números que no pueden ser sumas de divisores de otros (función SIGMA). Copiamos un código PARI que los encuentra:

mfun(n)={my(k=1,a=0,vale=0,f);while(vale==0&&k<n,f=sigma(k);if(f==n,vale=1;a=k);k+=1);a}
for(i=2,40,if(mfun(i)==0,print1(i,", ")))

Resultado: 2, 5, 9, 10, 11, 16, 17, 19, 21, 22, 23, 25, 26, 27, 29, 33, 34, 35, 37,…

Coincide con lo publicado en https://oeis.org/A007369

Cuestión dependiente de otro número

Lo que hemos efectuado sobre la función SIGMA es un caso de una negativa para un número N en una función que depende de otro K.

Es fácil, mediante un procedimiento similar al que usamos en otras cuestiones, encontrar números que no son el resultado de una función, en este caso SIGMA. Podemos algo así:

Function noes(n) as boolean
Dim k, f, cota
Dim vale As Boolean

'En esta línea concretamos la cota
cota = n
k = 1
vale = False ‘Suponemos que no se cumple lo pedido
While Not vale And k <= cota ‘Buscamos soluciones
'En esta línea concretamos la función
f = sigma(k)
If f = n Then vale = True ‘Si vale=True se detiene la búsqueda
k = k + 1
Wend
noes = Not vale Buscamos que el número no valga
End Function

Con esta función hemos repetido la búsqueda, obteniendo el mismo resultado:



Esta función nos servirá para otras cuestiones, con solo cambiar la línea f=sigma(k) por otra función, y cambiar la cota si es necesario.

Otro ejemplo clásico es el siguiente

Autonúmeros o números colombianos

Son aquellos que no pueden ser iguales a otro número sumado con sus cifras.

Puedes consultar nuestras publicaciones  https://hojaynumeros.blogspot.com/2015/03/autonumeros-1.html y la siguiente.

En este caso bastará escribir la línea f=k+sumacifras(k). La función sumacifras está explicada en la dirección anterior. Con esto confirmamos cuáles son los primeros autonúmeros:

Están publicados en https://oeis.org/A003052.

Con la función PHI de Euler

Otro caso interesante es el de aquellos números que no pueden ser función PHI de otros, es decir, que PHI(X)=N no tiene solución. Recordamos que PHI cuenta los números menores que X y que son primos con él, incluido el 1. Es evidente que X no será menor que N, lo que puede complicarnos la cota de búsqueda. En estos casos elegiremos cotas altas y estudiaremos los casos particulares. En este ejemplo usaremos cota 10^3 para los primeros números, y nuestra función euler(k), que devuelve el valor de PHI. Procederemos a escribirla en la línea correspondiente del código de la función.

Obtenemos:



Wikipedia en español les llama nototientes, traducción literal del inglés. Están publicados en https://oeis.org/A007617, y ahí puedes descubrir algunas de sus propiedades.

En PARI ya está implementada la función istotient, para números que pueden ser función de Euler de otros. Esto facilita la búsqueda. Por ejemplo, así:

 

En el listado figuran todos los números impares mayores que 1. La razón es que PHI(pm) es par para p primo, pues aplicando la fórmula

PHI(pm)=pm(1-1/p)=pm-1(p-1), y como el paréntesis es par, lo será todo el producto. Al ser multiplicativa, la función PHI seguirá siendo par para cualquier número.

Se pueden encontrar fácilmente los números pares que no son PHI(K) para ningún valor de K. Usaremos PARI:

 


Números no poligonales

Aquí nos referimos a los poligonales no triviales, es decir, que en cada lado figuren dos unidades al menos, porque con una unidad todos los números pueden ser poligonales, como vemos en la imagen, que representa al número 9:

Para estudiar si un número es poligonal no trivial no vale su fórmula general:

Se puede conocer si un número es poligonal o no, porque existe un criterio algebraico. Puedes verlo en mi publicación “Números poligonales” descargable desde http://www.hojamat.es/publicaciones/poligonales.pdf)

 

Con este criterio es fácil construir la función ESPOLIGONAL

Function espoligonal(n, k)
Dim d, e, m

m = 0
d = (k - 4) ^ 2 + 8 * n * (k - 2)
If escuad(d) Then ‘Criterio
m = (k - 4 + Sqr(d)) / 2 / (k - 2)
If esentero(m) Then e = m Else e = 0 ‘Ha de ser entero
End If
espoligonal = e
End Function

Devuelve un cero si no es poligonal, y su número de lados si lo es. Esta función tiene un parámetro k (número de lados), pero con un bucle podemos prescindir de él:

Function esunpoligonal(n) 'detecta poligonales regulares, desechando el caso n, trivial
Dim i, es

If n < 3 Then esunpoligonal = 0: Exit Function
es = 0
i = 3
While i < n And es = 0
If espoligonal(n, i) Then es = i
i = i + 1
Wend
esunpoligonal = es
End Function

Si aplicamos esta función a cualquier número y nos devuelve cero, es porque ese número no puede ser poligonal, salvo el caso trivial. De esta forma podemos encontrar los primeros números no poligonales:

1, 2, 3, 4, 5, 7, 8, 11, 13, 14, 17, 19, 20, 23, 26, 29, 31, 32, 37, 38, 41, 43, 44, 47, 50, 53, 56, 59, 61, 62, 67, 68, 71, 73, 74, 77, 79, 80, 83, 86, 89, 97, 98, 101, 103, 104, 107, 109, 110, 113, 116, 119, 122, 127, 128, 131, 134, 137, 139, 140, 143, 146, 149, 151, 152, 157,

Están publicados en https://oeis.org/A090467

Con estos ejemplos podemos entender que basta someter al número a una prueba concreta mediante una función y detectar, si la variable de respuesta es de tipo booleano, si el resultado es FALSO.

Existen muchos más ejemplos de números que “NO SON”. Incluimos otro ejemplo:

No son sumas de cuadrado y primo

Función:

Public Function primomascuad(n) As Boolean 'descompone un número en primo más cuadrado
Dim r, i, p
Dim vale As Boolean

vale = False
r = Sqr(n)
i = 1
While i <= r And Not vale
p = n - i ^ 2
If esprimo(p) Then vale = True
i = i + 1
Wend
primomascuad = vale
End Function

Los primeros números que no cumplen la condición son:

1, 2, 5, 10, 13, 25, 31, 34, 37, 58, 61, 64, 85, 91, 121, 127, 130, 169, 196, 214, 226, 289, 324, 370, 379, 400,…

https://oeis.org/A064233

No seguimos. La lista de ejemplos similares llenaría un libro.