martes, 13 de abril de 2021

Múltiplos a pares

La sucesión de OEIS número A077338 incluye los múltiplos k más pequeños de un primo de forma que  k+1 sea múltiplo del siguiente primo. Según el ejemplo contenido en esa página, 77 es múltiplo de 11 y 78 lo es del siguiente primo 13, ya que 77=7*11 y 78=77+1=6*13. La idea es prometedora, y emprendo búsquedas sobre ella sin saber hasta dónde nos llevará.

Reproducción de la sucesión

En este blog usamos con frecuencia las funciones ESPRIMO y PRIMPROX, de creación propia, y cuyos listados figuran en varias entradas. Por ejemplo en https://bit.ly/3qrRUkq tienes  los dos listados.

ESPRIMO devuelve verdadero o falso según sea su argumento y PRIMPROX nos informa del primo siguiente a un número. Con ellas dos podemos construir una función muy sencilla que determine si un múltiplo de un número primo cumple lo exigido.

En primer lugar usaremos una función que calcule el mínimo múltiplo que cumple la condición exigida. Puede ser esta, en VBASIC de Excel:

Function multiplosapares(p) ‘Actúa sobre un primo y busca el mínimo múltiplo con la condición pedida

Dim n, q, r, s, m

If Not esprimo(p) Then multiplosapares = 0: Exit Function ‘Si no es primo, no hay solución

m = 0 ‘Posible solución

n = p ‘Múltiplo de p

q = primprox(p) ‘Primo siguiente a p

While m = 0 ‘Busca mientras no exista solución

r = n / p: s = (n + 1) / q ‘Pares de cocientes

If r = Int(r) And s = Int(s) Then m = n ‘Si ambos cocientes son enteros, lo hemos conseguido

n = n + p ‘Busca el siguiente múltiplo

Wend

multiplosapares = m

End Function

 

Estamos suponiendo que siempre existe solución. Si no fuera así, la función entraría en un bucle infinito sin salida. Si la aplicamos a los primeros números primos obtendremos este listado:


Cada número de la segunda columna es múltiplo del correspondiente de la primera y, si le sumamos una unidad, lo será del siguiente primo. Por ejemplo, 516 es múltiplo de 43 (516=43*12), y si le sumamos 1, 517 es múltiplo del siguiente primo 47 (517=47*11).

Como ya indicamos, estos primeros números están publicados en http://oeis.org/A077338:

A077338 a(n) = smallest multiple of prime(n) such that a(n) +1 is a multiple of prime(n+1).               

2, 9, 20, 21, 77, 169, 170, 114, 115, 464, 961, 1147, 902, 516, 423, 530, 1829, 3416, 1206, 2627, 4818, 1659, 1245, 7565, 7372, 5252, 2781, 5885, 9265, 13334, 4191, 3013, 9590, 2085, 11324, 19781, 21352, 6846, 4843, 5190, 16289, 31132, 18527, 28564,…

Si traducimos la función en VBASIC a PARI podemos reproducir este listado. El código sería este:

multpares(p)=my(m=0,n=p,q=nextprime(p+1),r,s);while(m==0,n/p;s=(n+1)/q;if(r==truncate(r)&&s==truncate(s),m=n);n+=p);m

forprime(i=2,200,print1(multpares(i),", "))

Al usar el bucle forprime no hay que exigir que p sea primo. El resultado para los primeros primos menores que 200 es

 


(Imagen capturada de la web https://pari.math.u-bordeaux.fr/gp.html)

Se ve que coincide con lo publicado en OEIS. Por cierto que la sucesión no es creciente, a mayor primo no tiene que corresponder mayor solución.

 

Problema inverso

Podíamos ver el problema desde los números incluidos en la sucesión anterior. Dado un número cualquiera, ¿cómo saber si pertenece a ella? Para ello deberíamos recorrer todos los primos que pueden ser sus divisores y ver si alguno propicia la condición que nos interesa. La solución, en VBASIC podría ser esta:

Function esmultipares(n)

Dim p, es

If n = 2 Then esmultipares = 2: Exit Function  ‘El 2 coincide con su primo

p = 2 ‘Primer primo a probar

es = 0 ‘Caso en el que no hay solución

While p <= n / 2 And es = 0

If multiplosapares(p) = n Then es = p ‘Encontrada solución

p = primprox(p) ‘Se pasa al siguiente primo

Wend

esmultipares = es

End Function

 

Por ejemplo, esta función, aplicada al último término de los publicados, 28564, da como solución 193 y , en efecto, se cumple que 28564/193=148, luego es múltiplo, y su siguiente, 28565, es múltiplo de 197, su siguiente primo, ya que 28565/197=145.


Términos que son consecutivos

En el listado observamos soluciones consecutivas, como 19 con 20, 114 con 115 y 169 con 170 ¿Habrá más? Lo podemos ver con esta nueva función. Basta exigir que N y N+1 sean soluciones.

No hay muchos casos, por lo que acudiremos al lenguaje PARI, que permite mejor tratamiento de números grandes. El siguiente código nos permite encontrar que 193 es el primo correspondiente a 28564:

 multpares(p)=my(m=0,n=p,q=nextprime(p+1),r,s);while(m==0,n/p;s=(n+1)/q;if(r==truncate(r)&&s==truncate(s),m=n);n+=p);m

esmultpares(n)=my(p=2,es=0);while(p<=n/2&&es==0,if(multpares(p)==n,es=p);p=nextprime(p+1));es

print(esmultpares(28564))

Si adaptamos la última línea podemos encontrar los pares de consecutivos que existen en la sucesión. Después de llegar a 100000, no hemos encontrado más pares de consecutivos que los señalados más arriba.

 

Cuadrados contenidos en la sucesión

Si a la condición esmultpares(n) le añadimos (en PARI) issquare(n) podemos encontrar los cuadrados contenidos en la sucesión que estudiamos. Solo hemos encontrado tres: 9, 169 y 961.

En efecto, 9 es múltiplo de 3 y 10 de 5, que es su siguiente primo, 169 de 13 y 170 de 17, y, por último, 961 es múltiplo de 31 y 962 de 32.

 

Otros casos

Ejemplos de triangulares solo hemos encontrado uno: 21=6*7/2 es múltiplo de 7, y su siguiente, 22, del siguiente primo 11.

Oblongos hay dos entre los primeros números, 2=1*2 y 20=4*5, que cumplen la condición pedida.

Por último, los capicúas son cuatro, dentro de los primeros términos: 2, 9, 77 y 464.

El tema no nos da para más. Una línea de búsqueda consistiría en usar N+K en lugar de N+1, para ver si se encuentra algo curioso.

No hay comentarios: