domingo, 24 de marzo de 2013

Generalizando los números de Fermat

k = 14899339905 es el menor número k tal que el número ** N = 2^(2^n) + k es primo para 10 valores consecutivos de n; n= 0,1,2,3,4,5,6,7,8,9 **


 k=14899339905;for(n=0,10,a=2^2^n+k;if(isprime(a),print([a,n,ceil(log(a) *0.4343)])))


[14899339907, 0, 11]

[14899339909, 1, 11]

[14899339921, 2, 11]

[14899340161, 3, 11]

[14899405441, 4, 11]

[19194307201, 5, 11]

[18446744088608891521, 6, 20]

[340282366920938463463374607446667551361, 7, 39]

[115792089237316195423570985008687907853269984665640564039457584007928028979841, 8, 78]

[13407807929942597099574024998205846127479365820592393377723561443721764030073546976801874298166903427690031858186486050853753882811946569946433663905424001, 9, 155]


 Las últimas cifras a la derecha indican el número de dígitos (o cifras) de cada número primo. De propina, además N = 2^(2^n) + 14899339905 es también muy muy muy muy probablemente primo para n = 14; un número con 4933 dígitos. Todos los números, exceptuando este último, demasiado largo; han sido comprobados primos.

 He aquí el programa escrito en "Pari gp" dotado con una criba módulo 53130; para acelerar la búsqueda y hallar este número k :


 forstep(k=13999967547,10^11,[120, 18, 12, 48, 120, 12, 60, 138, 42, 30, 168, 12, 30, 108, 60, 30, 252, 78, 42, 48, 12, 18, 12, 108, 60, 30, 42, 138, 42, 108, 90, 42, 90, 30, 48, 162, 90, 90, 60, 60, 78, 42, 18, 12, 168, 12, 138, 60, 72, 138, 42, 30, 78, 90, 30, 12, 180, 18, 42, 48, 30, 60, 42, 30, 48, 120, 132, 78, 12, 120, 18, 12, 180, 18, 42, 138, 72, 180, 30, 108, 60, 12, 60, 78, 60, 42, 150, 48, 42, 120, 48, 12, 18, 42,78, 60, 72, 180, 120, 18, 60, 120, 12, 30, 48, 252, 120, 18, 12, 60, 120, 18, 12, 108, 60, 12, 60, 78, 60, 42, 30, 168, 12, 30, 108, 60, 30, 252, 48, 30, 42, 48, 12, 30, 48, 42, 18, 60, 132, 78, 42, 90, 18, 222, 30, 210, 180, 60, 78, 60, 42, 18, 12, 78, 90, 12, 138, 12, 48, 72, 48, 42, 48, 42, 30, 78, 90, 42, 180, 108, 12, 18, 60, 42, 78, 12, 240, 90, 120, 18, 12, 108, 72, 18, 42, 78, 60, 72, 78,42, 60, 30, 108, 60, 12, 60, 48, 30, 60, 42, 150, 48, 42, 48, 72, 48, 12, 120, 18, 60, 132, 120, 120, 18, 180, 12, 30, 108, 312, 18, 12, 78, 42, 60, 18, 12, 108, 60, 12, 60, 78, 12, 48, 42, 30, 48, 120, 12, 30, 108, 60, 330, 12, 18, 42, 60, 78, 42, 18, 192, 138, 72, 18, 120, 102, 30, 78, 132, 120, 60, 60, 78, 60, 42, 30, 48, 30, 90, 12, 138, 12, 48, 120, 42, 48, 42, 90, 18, 312, 108, 12, 18, 120,60, 12, 138, 102, 210, 18, 12, 108, 12, 60, 18, 42, 48, 30, 60, 72, 78, 42, 60,30, 48, 42, 18, 60, 12, 108, 30, 60, 42, 150, 138, 72, 60, 120, 18, 120, 72, 138, 102, 18, 90, 42, 48, 12, 30, 108, 180, 42, 90, 30, 78, 42, 60, 30, 48, 60, 60, 12, 138, 12, 48, 42, 78, 132, 138, 390, 12, 18, 42, 78, 60, 42, 18, 90, 42, 60, 138, 72, 18, 90, 30, 12, 90, 30, 48, 30, 132, 90, 30, 60, 120, 18, 60, 42, 78,30, 102, 138, 12, 168, 42, 180, 18, 120, 210, 42, 48, 12, 18, 120, 12, 48, 12, 108, 30, 102, 78, 132, 30, 108, 12, 60, 108, 30, 60, 150, 42, 60, 78, 42, 18, 72, 108, 30, 252, 138, 72, 78, 42, 60, 18, 120, 12, 60, 138, 102, 78, 30, 42, 48, 12, 30, 48, 60, 180, 12, 30, 90, 90, 18, 42, 60, 78, 60, 72, 138, 12, 168, 270, 90, 252, 48, 12, 18, 42, 48, 30, 12, 48, 42, 78, 30, 42, 60, 78, 42, 18, 72, 108, 30, 12, 90, 78, 30, 222, 30, 60, 120, 18, 120, 60, 30, 240, 12, 120, 48, 42, 120, 60, 18, 90, 30, 12, 198, 42, 48, 12, 78, 42, 18, 12, 48, 12, 108, 30, 102, 78, 12, 120, 138, 12, 60, 108, 30, 210, 42, 138, 42, 18, 132, 48, 30, 252, 48, 42, 48, 72, 48, 30, 42, 60, 78, 60, 12, 60, 120, 18, 102, 78, 30, 42, 60, 78, 60, 180, 12, 30, 108, 72, 18, 42, 78, 60, 60, 132, 78, 12, 120, 48, 120, 42, 168, 30, 252, 48, 12, 108, 12, 18, 12, 48, 42, 78, 30, 42, 60, 78, 42, 18, 72, 108, 30,12, 168, 30, 222, 30, 120, 60, 18, 120, 12, 48, 30, 90, 162, 48, 72, 48, 42, 48, 42, 30, 60, 108, 30, 12, 180, 18, 42, 60, 78, 42, 18, 12, 60, 108, 30, 180, 12, 138, 120, 12, 78, 42, 48, 30, 132, 78, 42, 90, 48, 42, 78, 72, 48, 90, 42, 198, 42, 48, 120, 12, 18, 42, 60, 78, 60, 12, 60, 120, 18, 120, 60, 30, 42, 138, 60, 180, 12, 30, 108, 12, 60, 18, 42, 78, 12, 48, 120, 72, 90, 48, 42, 30, 48, 120, 12, 30, 168, 30, 252, 60, 108, 12, 18, 12, 108, 60, 30, 42, 138, 42, 18, 90, 90, 30, 12, 120, 48, 30, 132, 90, 30, 120, 60, 78, 42, 18, 12, 48, 120, 12, 198, 72, 138, 42, 30, 60, 108, 30, 12, 180, 18, 42, 78, 60, 42, 18, 12, 168, 30, 180,12, 138, 12, 120, 78, 42, 48, 90, 72, 180, 30, 48, 42, 78, 12, 60, 138, 42, 198, 42, 168, 12, 18, 42, 78, 60, 60, 12, 180, 18, 120, 60, 30, 42, 48, 42, 48, 240,12,30,90,18, 12, 60],i=0;for(n=0,9,a=2^2^n+k;if(ispseudoprime(a),i++;if(i>8,print([k,n,i])))))


  *Explicación concisa pero seria de la criba* :

Queremos hallar un número k tal que el número N = 2^(2^n) + k sea primo para valores consecutivos de n, desde n=0.
Para ello k ha de ser impar ; de otra manera N sería divisible por 2.  Vamos a utilizar  la teoría (sencilla) modular de Gauss. El resto entero "a" tras una división de cualquier número entero por el número entero "b" se llama "a módulo b" y se puede escribir " a mod b" . Consideremos que b=10 y en este caso "a" será el último dígito  o última cifra de un número dado. 2^(2^n) = (2^((2^n)/2))^2 tiene como último dígito sucesivamente:
2-->4-->6-->6.... ya que son cuadrados sucesivos uno del otro , que el cuadrado de 4 es 16 y que el cuadrado  de cualquier número que termine en 6, termina en 6. Si k = 1 mod 10 N = 1+4 = 5 mod 10 para n = 1. Los números que terminan en 5  son divisibles por 5, y N no sería entonces primo para n = 1. Si k = 3 mod 10, entonces para n = 0; N = 2+3 = 5 mod 10 no sería primo. Y si k = 9 mod 10;  N = 6 + 9 = 15 = 5 mod 10 sería divisible por 5. Así que k, que debe de ser impar, sólo puede ser  k = 5 mod 10 o k = 7 mod 10. (k terminará siempre en 5 o en 7).

 Tomando b = 3, vemos que (2^((2^n)/2))^2  es sucesivamente 2 mod 3-->1 mod 3-->1 mod 3..... El 1 mod 3 se repite indefinidamente, porque el cuadrado  de 1, para cualquier módulo, es 1. Deducimos que k no puede ser ni  1 mod 3 ni 2 mod 3 porque entonces N sería 1+2 = 3 = 0 mod 3; es decir divisible por 3 y por tanto no primo. Luego k debe de ser k = 0 mod 3, divisible por 3. Esta condición unida a las dos anteriores nos da que k debe de ser k = 15 mod 30 o k = 27 mod 30. Sólo tenemos que mirar 2/30 = 1/15 de los valores posibles de k.

Los cuadrados sucesivos de 2 mod 11 son cíclicamente 2,4,5,3 y 9 mod 11 por lo que debe de ser k = 0,1,3,4,5 o 10 mod 11---> k = 15, 27, 45, 87, 135, 147, 165, 177, 225, 267, 285, 297 mod 330. El programa (en Pari gp) para encontrar algún k con 10 valores primos consecutivos N; desde n=0 y desde  k= 600000000  sería : forstep(k=600000075,10^10,[12,18,42,48,12,18,12,48,42,18,12,48],i=0;for(n=0,9,a=2^2^n+k;if(ispseudoprime(a),i++;if(i>7,print([k,n,i])))))
Ahora sólo tenemos que comprobar 12/330 = 1/27,5 números k; iremos casi 2 veces más rápido que antes  con 1/15.
Hay que tener en cuenta que k debe de ser 15 mod 330. El vector [12,18,42,48,12,18,12,48,42,18,12,48] son los incrementos sucesivos que se le van dando a "k".

Repetimos la operación con 7 y con 23. Y obtenemos que sólo hay que comprobar 780 resíduos de entre 330*7*23 = 53130, es decir 1 / 68,1 de los posibles valores de k. Iremos 68,1/27,5 = 2,5 veces  aproximadamente más rápido que módulo 330.

**k debe de empezar, si se para el programa y se empieza de nuevo, en 27 mod 53130. Para ello se debe de empezar en k = k aproximado que se quiera - k mod 53130 + 27.  **


Cuanto más se profundiza en el módulo, más rápido se irá, pero con más gasto de memoria RAM del ordenador. Un equilibrio entre profundidad de la criba y memoria gastada es necesario. Evaluo que en mi ordenador podría encontrar el menor número k con 11 primos consecutivos; profundizando bastante más la criba; pero buscando un número importante de números k con 10 primos consecutivos y comprobándolos todos posteriormente por si tienen el undécimo; este método sería el más rápido. No creo que llegue jamás a encontrar con sólo  mi ordenador  un k de 12 primos consecutivos, si existiera.

He aquí un programa patoso que escribí para encontrar los números primos más favorables para añadir, si menester fuera, a la criba. Los mejores son los que tienen el porcentaje más bajo; que he añadido a mano, porque no sabía como obtener un valor real resultado de una fracción racional, con Pari gp.


forprime(p=7,1000,a=2;l=floor(0.7*p);v=vector(l);b=a%p;for(n=1,l,v[n]=b;b=b^2%p);for(m=1,l,i=m;for(o=m+1,l,i++;if(v[m]==v[i],break(2))));u=vector(i-1);for(q=1,i-1,u[q]=p-v[q]);t=vector(p);for(r=1,p-1,t[r]=r);for(r1=1,p,j=0;for(r2=1,i-1,j++;if(t[r1]==u[j],t[r1]=0)));t1=vecsort(t);s=vector(p-(i-1));r4=i;for(r3=1,p-(i-1),s[r3]=t1[r4];r4++);if((length(s)/p)<2/3,print([length(s),p,length(s)/p])))

[6, 11] 54.5 %  [12, 19] 63.2 % [13, 23] 56.5 % [30, 59] 50.8 % [54, 107] 50.5 % [108, 163] 66.3% [85, 167] 50.9 % [133, 263] 50.6 % [174, 347] 50.1 % [181, 359] 50.4 % [294, 587] 50.1 % [421, 839] 50.2 % [445, 887] 50.2 % [493, 983] 50.2 %

Utilizando los primos más pequeños con porcentaje cercano a 1/2; podría llegar a una velocidad 2^3 = 8 veces mayor pero a costa de utilizar unos 780*70^3 = 270 millones de resíduos, más de 1 GByte de Ram.




Nota: Sólo soy un "amateur" básicamente autodidacta, con muy escasos conocimientos de programación y de matemática; con apenas los conocimientos básicos. Esto es fruto de esfuerzo, trabajo y sudor, más que de  talento; resultado también de pertinaz aburrimiento. Y a veces no logro ni la cpacidad de concentración suficiente para poder terminar algo. Llevo una semana, hoy al 01/04/2013, intentando unir todos mis programas en uno sólo muy rápido y optimizado y a medida, pero no puedo ni empezar siquiera; no logro concentrarme en ello; no puedo a veces  ni  pensar. Lo tendré que dejar abandonado, como está, sin haber tenido la satisfacción de haber hallado el *menor número k* de 11  primos consecutivos y el de haber intentado al menos encontrar el casi inalcanzable, para un ordenador personal, *menor número k* de 12; se necesitarían 2^12*ln2 = 2800 ordenadores como el mío trabajando juntos en tarea compartida.


Adenda al 03/04/2013 :

Farideh Firoozbakht, una mujer Iraní, encontró y publicó en la OEIS (On Line Encyclopedia of Integer Sequences) hace unos 6 años este mismo número.

http://oeis.org/A129613

Los cinco primeros términos de la sucesión son los valores k = 1 de los 5  únicos números primos, también consecutivos, conocidos hasta ahora de Fermat. He comprobado la exactitud de los 5 valores de k siguientes.

Y Jens Kruse Andersen, un simpático danés que escribe -en inglés- muy bien como su apellido indica, con quien he tenido el honor de cartearme -e una o dos veces; yo siempre aprendiendo de él; recopilador y hallador él mismo de asombrosos records del mundo en torno  a los números primos; encontró hace unos 3 años el menor número k que genera 11 primos de Fermat generalizados (1) consecutivos.       k = 8073774344085.    

http://users.cybercity.dk/~dsl522332/

Me siento halagado y feliz que una mujer Iraní haya encontrado lo que yo también he buscado; antes que yo.

(1) : Números de Fermat Generalizados  son números de la forma N = b^2^n + k siendo b y k  números enteros y pudiendo ser k negativo. Es probable que k = 14899339905 sea el menor número k positivo que produce 10 primos consecutivos para todos los valores de 2 <=  b  <= k; pero habría que comprobarlo escribiendo un programa-criba automatizado, ya que la criba ha de ser diferente para cada nuevo valor de b. No sé si sería factible comprobarlo computacionalmente con las funciones "isprime" o "ispseudoprime" de Pari gp o si sería demasiado lento ya que los números N = b^2^n + k con b cercano a 1,5 * 10^10 tienen del orden de 5200 dígitos para n = 9.

Aquí van unos ejemplos de números N = b^2^n + k con 6 valores primos consecutivos para n = 0, 1, 2, 3, 4, 5, escritos en la forma (b , k) con b distinto de 2 y k distinto de 1 :

(3 , 440)

(5 , 1518)

(6 , 1081)

(14 , 405)

(20 , 1071)

(67 , 240)

(1145 , 7554)

(1938 , -7)

(1989 , 8072)

(2614 , 9505)

(2775 , -824)

(3863 , 8418)


 Por ejemplo los 6 números primos de (20 , 1071), el último número, después del valor de n, indicando el número de dígitos del número primo en cuestión, son :


[1091, 0, 4]
[1471, 1, 4]
[161071, 2, 6]
[25600001071, 3, 11]
[655360000000000001071, 4, 21]
[429496729600000000000000000000000000001071, 5, 42]



En un artículo de interés intitulado :  "La Ley Fuerte de los Números Pequeños",  Richard K. Guy da 35 ejemplos en los que una sucesión de números pequeños, parecen marcar una pauta que después no existe en realidad. El primer ejemplo es el de los cinco primeros números primos consecutivos de Fermat :
N = b^2^n  + k es primo para b = 2; k = 1 y n = 0, 1, 2, 3, 4  :

2^(2^0) +1 = 3; 2^(2^1) +1 = 5; 2^(2^2) + 1 = 17; 2^(2^3) + 1 = 257; 2^(2^4) + 1 = 65537; son todos   números primos; pero sólo para  los valores más pequeños de n. Para el siguiente valor de n (n= 5), N ya no es primo y hubo de esperar hasta Euler -por desinterés, creo yo; más que por la dificultad, aún trabajando (dividiendo) a mano- para saberlo : 2^(2^5) + 1 = 4294967297 = 641 * 6700417.  Bastaban 113 divisiones (1), nada que no se pudiera hacer en unos dos o tres días de trabajo monótono, no más, para llegar a la conclusión que no era un número primo. Como dice el propio Guy : "Ni más ni menos que una persona como Fermat se equivocó". Pierre el francés dijo, o eso parece, que todos los números de la forma 2^2^n + 1 serían primos. Yo creo más bien que  intentaba retar a otros colegas; él como "amateur" no tenía el tiempo suficiente; sin contar la estrechez de los márgenes de los libros, por aquella época...

Por otra parte, dentro de la "Ley de los números pequeños" podemos incorporar una "Ley de los números de tamaño medio" :  N = b^(2^n)  + k es primo para pocos valores y pequeños  de n y pocos valores y pequeños de b. Pero si k es de "tamaño medio"el número de esos pequeños valores de n que producen una pauta prímica; se puede duplicar.

Yo me sacaría además de la manga - pero Guy tiene razón- una "Ley de la insuficiencia de la muestra estadística utilizada"  En una muestra de 4000 números "b" con 10000 números "k"  probados  por cada uno de ellos; con  12 resultados hallados con 6 números primos consecutivos -expuestos más arriba- sólo    2 / 12 = 16,7 % de ellos tenían un k negativo (si el ordenador ni yo mismo hemos fallado); cuando el porcentaje debiera haber sido del 50 %.


(1) : 641  es el 116-ésimo número primo, pero no es necesario dividir por 2, 3 o 5. Pero si de verdad se quiere deducir; determinar si los números N = b^2^n + k son primos para todos los valores de "n"; para b=2 o  para cualquier otro valor de b; basta con tomar varios valores de k, dos o tres no más.

 Para k = 3 y b=2; N = 2^(2^n) + 3 es : 2^(2^0) + 3 = 5 es primo; 2^(2^1) + 3 = 7 es primo; 2^(2^2) + 3= 19 es primo; 2^(2^3) + 3 = 259 = 7*37 no es primo.

  Para k = 5 y b= 2; N = 2^(2^n) + 5 es : 2^(2^0) + 5 = 7 es primo; 2^(2^1) + 5 = 9 = 3*3 no es primo.

  Para k = 2 y b=3; N = 3^(2^n) +2 es :  3^(2^0) + 2 = 5 es primo; 3^(2^1) +2 = 11 es primo; 3^(2^2) +2 = 83 es primo; 3^(2^3) + 2 = 6563 es primo; 3^(2^4) +2 = 43046723 = 19^2*119243 no es primo.

Se ve fácilemente, sin necesidad de hacer 113 divisiones largas, que para valores de k distintos de k =1; no todos los N son primos. ¿ Porqué para k = 1 habrían de serlo ?

Por otra parte, Euler demostró, pero no tengo ni idea de cómo, ahora mismo; que los factores de los números de Fermat  no primos, eran de la forma k*2^n + 1, es decir de la forma k*2^5 +1 = 32*k +1 en el caso de n=5 por lo que, como 641 = 32*20 + 1 Euler sólo tuvo que hacer 20 divisiones como mucho, pudiendo descartar incluso algunas de ellas.


PS: No me interesan tanto los números como la relación que hay entre ellos que se puede extender a la relación que hay entre las cosas y los entes; el propósito es intenter lograr pensar poco pero bien, de la misma manera que El Quijote aconsejaba  a Sancho comer poco y cenar más poco; la calidad y no la cantidad, ni tampoco lo caro, esa es la meta, pues la salud de todo el cuerpo se forja en las oficinas de la mesura; una economía y una higiene del pensamiento del que los números no son sino un símbolo más, como lo son también las letras de las que tampoco  se ha de abusar, que nos inundan con exceso a veces; además de una colaboración amistosa con el ordenador que  aportará los datos que desconocemos, esclarecerá algo la situación, pero sin pontificación ni por su parte ni la del servidor que  tanto habla y no convence.

PS1:  Todo este texto-artículo-matemática-discurrir que antecede no representa lo que soy más que cualquiera de los demás textos escritos en este blog. Todos los textos escritos en esta bitácora han de ser tenidos en cuenta. En defensa de mi inocencia, diré que mi cerebro sigue siendo intervenido, controlado exteriormente a mi persona, por lo que parte de lo que digo e incluso que escribo; parte de mis gestos también; son de otros intrusos no invitados por mí; no son míos y por tanto son falsos; carentes de validez. Lo que digo es que un "no" o un "sí" dichos por mí, pueden en realidad haber sido dichos por otros, sin que yo siquiera me haya dado cuenta, sobre todo hace unos años, en el que me tenían mucho más dormido e inconsciente (fuera de mí mismo) que ahora. Por otra parte reitero que me han hecho olvidar todo del pasado y que no sé tampoco del presente. No sé nada, no trecuerdo nada; y ni siquiera conozco las reglas que rigen este mundo de ahora; ni el de antes; no estoy hablando de las reglas generales del derecho, que cualquiera, inteligente, entiende.



 

1 comentario:

Ana de la Serna dijo...

A mí me hubiera costado la vida!!