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:
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:
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
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,…
No seguimos. La lista de ejemplos similares llenaría un libro.
No hay comentarios:
Publicar un comentario