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.

No hay comentarios: