lunes, 22 de noviembre de 2021

Los pseudoprimos

Definición de pseudoprimo 

La idea de número pseudoprimo surge de los grandes teoremas de la Aritmética Modular

(Ver mi publicación http://www.hojamat.es/sindecimales/congruencias/teoria/teorcong.pdf):

Podemos comenzar por el de Euler: Si llamamos j(m) a la indicatriz de Euler de m, se cumplirá que

 aj(m) =1 (mod m)

para todo a primo con m. (Teorema de Euler)

Si m es primo, la igualdad anterior se puede expresar como

am-1 =1 (mod m)

 (Pequeño Teorema de Fermat)

El recíproco no es cierto. Si para un a primo con m se cumple

am-1=1 (mod m), entonces m no tiene que ser necesariamente primo. A estos números compuestos que cumplen el teorema les llamaremos pseudoprimos de Fermat (hay otras clases de pseudoprimos). Este carácter dependerá del valor de la base a.

 

Identificación de pseudoprimos

No es nada complicado identificar un pseudoprimo respecto a una base dada. Las operaciones son sencillas, pero pueden alcanzar números muy grandes, por lo que tendremos que usar técnicas de Aritmética Modular en algunos casos, para abreviar cálculos y datos.

La primera operación es la de obtener el resto de una potencia respecto a un módulo, lo que llamamos resto potencial. En nuestra web figura una hoja de cálculo de hace años, muy simple, que los calcula para datos no muy grandes

http://www.hojamat.es/sindecimales/congruencias/herramientas/hoja/potenciales.xls

La teoría sobre restos potenciales también la puedes consultar en nuestro documento

http://www.hojamat.es/sindecimales/congruencias/teoria/teorcong.pdf

Aquí partiremos de una función que actuará sobre tres datos:

  • ·       Base de la potencia b
  • ·       Exponente p
  • ·       Módulo m

Sobre ellos actuará la función RESTOPOT para Excel y LibreOffice Calc, que irá construyendo la potencia mediante multiplicaciones, pero convirtiendo cada resultado en resto módulo m, con lo que no se disparará la magnitud de los datos. Este es su listado:

Función RESTOPOT

Public Function restopot(b, p, n)

Dim r, m, i

 

r = b Mod n ‘Resto de la base respecto a m

m = 1

For i = 1 To p ‘Se construye la potencia con restos

m = m * r Mod n m irá recorriendo los restos potenciales

Next i

restopot = m

End Function

 Por ejemplo, el resto de 3^26 respecto al módulo 7 sería RESTOPOT(3;26;7)=2, como puedes comprobar en la hoja potenciales.xls presentada más arriba:

 


Con esta función podemos averiguar si am-1 =1 (mod m)  y si m es compuesto, con lo que tendría el carácter de pseudoprimo.

Contando con la función RESTOPOT es fácil exigir que se cumplan las condiciones para ser pseudoprimo en una base dada.

 

Public Function espseudo(m, b) As Boolean

If Not esprimo(m) And mcd(m, b) = 1 And restopot(b, m - 1, m) = 1 Then espseudo = True Else espseudo = False

End Function

Nos limitamos a exigir que

  • ·       Sea compuesto
  • ·       Primo con la base
  • ·       El resto potencial bm-1 respecto a m sea 1

Con esta función y un bucle de búsqueda podemos reproducir muchas sucesiones de pseudoprimos ya publicadas en OEIS. Por ejemplo, para b=23 obtenemos esta lista:

Pseudoprimos en base 23

22, 33, 91, 154, 165, 169, 265, 341, 385, 451, 481,…

La puedes comprobar en http://oeis.org/A020151

En base 11

Obtenemos: 10, 15, 70, 133, 190, 259, 305, 481, 645, 703, 793, 1105, 1330, 1729, 2047, 2257

(Ver http://oeis.org/A020139)

 

Versión en PARI

Si deseas estudiar números mayores contando con la mayor velocidad de proceso de PARI, puedes usar este código debidamente adaptado a tus datos (está construido para base 23 y búsqueda hasta el 4000):

rpm(b,p,n)={my(r,m,i);r=b%n;m=1;for(i=1,p,m=(m*r)%n);m}

espseudo(m,b)=!isprime(m)&&gcd(m,b)==1&&rpm(b,m-1,m)==1

for(k=2,4000,if(espseudo(k,23),print1(k,", ")))

Lo hemos adaptado a base 17 y cota 20000, obteniendo:

4, 8, 9, 16, 45, 91, 145, 261, 781, 1111, 1228, 1305, 1729, 1885, 2149, 2821, 3991, 4005, 4033, 4187, 4912, 5365, 5662, 5833, 6601, 6697, 7171, 8481, 8911, 10585, 11476, 12403, 12673, 13333, 13833, 15805, 15841, 16705, 19345, 19729,…

Coinciden con los pseudoprimos publicados en http://oeis.org/A020145

 

Números de Carmichael

Si un número es pseudoprimo con base todos los números coprimos con él, se llama “de Carmichel”.

Los primeros los tienes en https://oeis.org/A002997:

561, 1105, 1729, 2465, 2821, 6601, 8911, 10585, 15841, 29341, 41041, 46657, 52633,…

Bastará recorrer los números coprimos con uno de ellos y comprobar que es pseudoprimo con todos ellos.

Hay criterios más sencillos, que puedes consultar en

https://en.wikipedia.org/wiki/Carmichael_number.

 

Números de Sarrus o Poulet

Estos son los pseudoprimos en base 2, también llamados números de Sarrus, Poulet o simplemente psudoprimos, sin especificar el módulo.

El primer pseudoprimo módulo 2 es el 341, porque es compuesto (341=11*31) y cumple que

2340 =1 (mod 341)

Esta condición se verifica fácilmente, ya que 210=1024=3*341+1 presenta resto 1 respecto al módulo 341, por lo que todas sus potencias, entre ellas 2340 también tendrán ese mismo resto.

El segundo pseudoprimo módulo 2 es 561, que es compuesto (561=3*11*17) y se verifica que

2560 =1 (mod 561)

La sucesión de números de Poulet la tienes en http://oeis.org/A001567

341, 561, 645, 1105, 1387, 1729, 1905, 2047, 2465, 2701, 2821, 3277, 4033, 4369, 4371, 4681, 5461, 6601, 7957, 8321, 8481, 8911, 10261, 10585, 11305, 12801, 13741, 13747, 13981, 14491, 15709, 15841, 16705, 18705, 18721, 19951, 23001, 23377, 25761, 29341...


Aquí nos hemos limitado a presentar conceptos básicos y facilitar la búsqueda de pseudoprimos. Se podría extender más su estudio, pero superaría los objetivos de este blog.

 

lunes, 8 de noviembre de 2021

Números de Hogben

La elección de temas que efectúo para este blog tiene a veces carácter azaroso. Dentro de mis publicaciones en Twitter (@connumeros) descubrí que el número 1723 equivale a la suma de dos números triangulares de órdenes 40 y 42 respectivamente. Me gustó la idea y emprendí un estudio algebraico del tema:

Sean los órdenes k y k+2, con N como suma de dos triangulares. Tendremos:

 k(k+1)/2+(k+2)(k+3)/2=N

k(k+1)+(k+2)(k+3)=2N

K2+k+k2+5k=2N-6

2k2+6k=2N-6

4k2+12k=4N-12

(2k+3)2=4N-3

Esta identidad me llevó a buscar los números N en los que 4N-3 es un cuadrado, para después, posteriormente despejar el valor de k.

Emprendí la búsqueda y obtuve este listado:

Cuando obtengo un resultado así (podía haber comenzado con los valores de k), suelo buscarlo en la página OEIS (http://oeis.org/) y así fue como llegue a los números de Hogben (http://oeis.org/A002061), que no había tratado en este blog. Decidí cambiar mis planteamientos iniciales para dedicarme a estudiar esos números con mis herramientas usuales. Como dan lugar a muchas curiosidades, y están todas muy bien desarrolladas en distintas páginas, iré enlazándolas cuando crea que no puedo aportar nada nuevo.

Números de Hogben

Podemos definirlos como aquellos que son suma de dos número triangulares cuyos órdenes se diferencian en dos unidades, pero también vemos en la tabla que H(k)=k2-k+1, como por ejemplo H(5)=25-5+1=21, y H(7)=49-7+1=43.

Si despejo N en una igualdad anterior, me queda:

(2k+3)2=4N-3; 4N=4k2+12k+9+3; N=k2+3k+3

Puedo expresar N en función de k+2:

N=k2+3k+3=(k+2)2-(k+2)+1

Para que coincida esta expresión con la generación de la tabla basta elegir k como el índice mayor de los dos triangulares que se suman, es decir, k+2, y así se establece la coincidencia de métodos.

N= k2-k+1

Esta es la definición que se usa en http://oeis.org/A002061. Hay que recordar que en OEIS se prefiere iniciar las sucesiones con índice 0:

A002061                            Central polygonal numbers: a(n) = n^2 - n + 1.

1, 1, 3, 7, 13, 21, 31, 43, 57, 73, 91, 111, 133, 157, 183, 211, 241, 273, 307, 343, 381, 421, 463, 507, 553, 601, 651, 703, 757, 813, 871, 931, 993, 1057, 1123, 1191, 1261, 1333, 1407, 1483, 1561, 1641, 1723, 1807, 1893, 1981, 2071, 2163, 2257, 2353, 2451, 2551, 2653

Estos números, rotulados como “poligonales centrales” son los números de Hogben.

Si situamos los números naturales en espiral, los de Hogben ocupan los extremos de la diagonal principal, tal como podemos observar en la tabla creada con hoja de cálculo:


La razón estriba en que la diferencia entre dos números de Hogben consecutivos es

H(n+1)-H(n)=(n+1)2-n-1+1-n2+n-1=2n

Vimos más arriba que H(5)=21, luego su diferencia con el siguiente será 2*5=10, y en la espiral vemos que se necesitan diez pasos para ir de 21 a 31. Como el número de pasos va creciendo de 2 en 2 y el incremento H(n+1)-H(n) también, se dará esa coincidencia en todos los casos.

La anterior fórmula se puede interpretar como una recursión:

H(n+1)=H(n)+2n

Por ejemplo, 13 es el número de Hogben de índice 4, luego el siguiente será 13+2*4=21, como era de esperar.

Con nuestra herramienta para prolongar recurrencias podemos buscar una de tipo homogéneo, y, en efecto, es muy simple:

H(n+3)=3*H(n+2)-3*H(n+1)+H(n)

(http://www.hojamat.es/blog/ecurrecurre.xlsm)

Es así por ser un polinomio de segundo grado, y con ellos funciona esta recurrencia siempre. Lo puedes comprobar con esta captura de pantalla de la calculadora Wiris (https://calcme.com/a)

Se ha desarrollado la suma de la recurrencia y el resultado esperado, obteniendo el mismo resultado.

Dados tres términos consecutivos, como 31, 43, 57, se cumple que el siguiente, 73, se puede encontrar de la forma 3*57-3*43+31, y así es, porque el resultado es 73.

En la entrada de blog http://voodooguru23.blogspot.com/2018/11/hogben-numbers.html puedes consultar algunas propiedades interesantes de estos números. Están bien desarrolladas y sería inútil repetirlas aquí.

Una interpretación sencilla de estos números es que n2-n+1 equivale a n(n-1)+1, es decir, a un número oblongo (y por tanto rectangular) al que le añadimos una unidad. Lo hemos representado así:


En la siguiente página se intenta explicar por qué Sloane y Plouffe llamaron a estos números “poligonales centrales”. Es interesante su lectura.

http://mrob.com/pub/seq/a002061.html

 

Cuatro propiedades aritméticas

(1) Según afirma Amarnath Murthy en la página de OEIS enlazada, el número de Hogben H(n) se puede interpretar como el término n de una progresión de diferencia n que comienza en 1. En efecto:

N=1: D=1: H(n)=1

N=2, D=2: 1, 3

N=3, D=3: 1, 4, 7

N=4, D=4: 1, 5, 9, 13

Vemos que todas las progresiones así construidas finalizan en un número de Hogben.

Esto es ningún misterio. Según la teoría de las progresiones tendremos:

H(n)=H(1)+D*(n-1)=1+n(n-1)=n2-n+1, que es la fórmula de estos números.

(2) Los números de Hogben son los residuos de n3 respecto a n2+1

Con la función RESIDUO de Excel y Calc es fácil comprobarlo:


Algebraicamente también es fácil, porque n3=(n-1)*(n2+1)+n2-n+1 con lo que el residuo es

n2-n+1=H(n)

(3) Los números de Hogben H(n) se representan como 111 en la base (n-1)

Por ejemplo, 7(10 = 111(2,  13(10=111(3,  21(10=111(4

La razón es que H(n+1)=(n+1)2-(n+1)+1 por definición, y simplificando queda n2+n+1, lo que significa 111(n.

 

(4) Si recordamos el cociente entre una suma de potencias y la suma de sus bases, obtendremos un sencillo resultado:

Así que basta dividir el cubo de n3+1 entre n+1 para obtener H(n):

H(4)=(64+1)/(4+1)=13

H(7)=(343+1)/(7+1)=344/8=43