11 junio 2019

Termux: ¿ La suma de varios números primos consecutivos es un número primo ? II

La entrada anterior finalizaba con una pregunta: ¿Cual será el máximo de secuencias consecutivas?

Pues la respuesta parece ser que no hay un máximo.
A partir del script en PARI utilizado en la entrada anterior desarrollé otro para determinar las secuencias contínuas que se podrían obtener. El cálculo es muy laborioso y hasta el dia de hoy (11/06/2019) he encontrado un máximo de 9 secuencias consecutivas; a continuación la primera de ellas que aparece en el rango 10^9:

  15644021363 + 15644021383 + 15644021453 = 46932064199
  15644021383 + 15644021453 + 15644021557 = 46932064393
  15644021453 + 15644021557 + 15644021579 = 46932064589
  15644021557 + 15644021579 + 15644021587 = 46932064723
  15644021579 + 15644021587 + 15644021641 = 46932064807
  15644021587 + 15644021641 + 15644021669 = 46932064897
  15644021641 + 15644021669 + 15644021677 = 46932064987
  15644021669 + 15644021677 + 15644021681 = 46932065027
  15644021677 + 15644021681 + 15644021699 = 46932065057

El mismo script también hace un conteo de cuantas secuencias consecutivas  hay para un rango determinado:

x 1 sec2 sec 3 sec4sec 5 sec 6 sec 7 sec 8 sec9 sec 10 secTime (ms)
10^1 32 10 0 0 0 00 0 0ms
10^2159 52 100 0 00 0ms
10^3 6728 1131 0000 00ms
10^4392144 51 18 5 00000 20ms
10^5 2353609 154 41 121 00 0 0120ms
10^6 15110 3119 637 1313272 000 1100ms
10^7 107553185663220 57710214 20 00 12160ms
10^8 803458119753 17224 257239764800 0116510ms
10^9 6227154819528104410134241768236 34 300 1151220ms
10^10496923645860211670157 77647 8942 9941069 00 42543700ms

08 junio 2019

Termux: ¿ La suma de varios números primos consecutivos es un número primo ?

Si tenemos varios números primos consecutivos, surge la pregunta de si la suma de los mismos sigue siendo un número primo.
Si sumamos un número par de números primos tendremos un número par, que no es primo, por lo que sólo podremos obtener un número primo si sumamos un número impar de números primos, y claro, no siempre será primo.

A continuación un script en PARI-GP que permite generar/contar  secuencias para tres y cinco primos consecutivos..
Se incluyen varias líneas para mostrar en pantalla y grabar las secuencias válidas en ficheros.


Una vez cargado el fichero en pari-gp se llama la función mediante el comando sump1(0,9). En este caso vamos a generar/contar las secuencias en el rango 10^0 - 10^9 . En la tabla adjunta se muestran los valores obtenidos en una tablet Praga ejecutando PARI-GP V.2.11.0

10^x Sum 3 Primes Sum 5 primes Time(ms)
0 2 2 0ms
1 15 13 0ms
2 66 75 47ms
3 392 352 266ms
4 2353 1947 937ms
5 15110 12768 6313ms
6 107553 90677 49359ms
7 803458679676 136380ms
8 622715452887321397410ms
9 496923644236677748718060ms

Si utilizamos la opción de generar los ficheros con las secuencias válidas podemos observar varios casos interesantes:
  • Dos secuencias de tres y cinco primos con los tres primos iguales:
          9999943 + 9999971 + 9999973 = 29999887
          9999943 + 9999971 + 9999973 + 9999991 + 10000019 = 49999897
  • Tres secuencias de tres primos  consecutivas 
            491 + 499 + 503 = 1493
            499 + 503 + 509 = 1511
            509 + 521 + 523 = 1553
  •  Cinco secuencias de tres primos consecutivas
           3253 + 3257 + 3259 = 9769
           3257 + 3259 + 3271 = 9787
           3259 + 3271 + 3299 = 9829
           3271 + 3299 + 3301 = 9871
           3299 + 3301 + 3307 = 9907

        Pregunta: ¿Cual será el máximo de secuencias consecutivas?

25 mayo 2019

Termux : ¿ Cuantos números primos hay ?

Un tema apasionante de la teoría de los números naturales es determinar cuantos números primos hay y la distribución de los mismos.

A pesar de que es un tema que ha sido estudiado profundamente por grandes matemáticos durante varios siglos (Gauss , Legendre, Jacques Hadamard , Charles de la Vallée Poussin,etc) áun hoy en día existen conjeturas e hipótesis pendientes de confirmar.

El siguiente programa en el lenguaje matemático PARI-GP permite contar los números primos para un rango determinado de números, incluyendo aproximaciones desarrolladas para estimar esta cantidad : x/(log(x)-1 ) , Li(x) y R(x)
Adicionalmente indica el número de números primos especiales : twins , triplets, quadruplets , quintuplets y sextuplets
La última columna indica el porcentaje de primos en relación al rango correspondiente, pudiendo observarse que el mismo disminuye progresivamente.


A continuación un ejemplo de los resultados del programa:

xpi(x)TwinsTrip.Quad.Quint.Sext.x/(log(x)-1)Li(x)R(x)pi(x)/x
10 4 2 2 1 1 0 8 5 5 40
10^2 25 8 9 2 3 1 28 29 26 25
10^3 168 35 30 5 5 2 169 177 168 17
10^4 1229 205 112 12 9 2 1218 1245 1227 12
10^5 9592 1224 507 38 21 5 9512 9629 9587 10
10^6 78498 8169 2837 166 65 5 78030 78627 78527 8
10^7 664579 58980 17220 899 321 18 661459 664917 664667 7
10^8 5761455 440312 111156 4768 1383 82 5740304 5762208 5761552 6
10^9 50847534 3424506 759256 28388 7221 317 50701542 50849234 50847455 5
10^10 455052511 27412679 5425573 180529 40414 1613 454011971 455055614 455050683 5


Actualización 02/06/2019 : Otra versión del programa que utiliza la función nextprime(p) de pari-gp. Esta versión es más rápida que la anterior, no calcula contadores de twins,triplets,etc pero incluye una amplicación de la aproximación Li(x):



También incluyo un sencillo script en el lenguaje de cálculo matemático ARIBAS, desarrollado por el Profesor Dr. Otto Forster , de la Univ. LMU Munich. Los tiempos de ejecución son mayores a los del script en pari-gp (concretamente a partir de 10^8 , ya que el tiempo de cálculo pasa de  500seg a 11000seg, pudiendo interpretarse que el algoritmo utilizado es mucho mas lento a medida que se incrementa el número a validar)  :



Un programa realmente eficiente para el cálculo de números primos es primesieve de Kim Walisch.
Mediante este programa se han logrado varios records mundiales de conteo de números primos. La compilación en termux se puede hacer sin problemas.
Para tener un día de su eficiencia, el conteo de números primos, twins, triplets, quadruplets, quintuplets y sextuplets hasta 10^10 tomó 42seg en una tablet con cpu armv71 de 32bits a 1.344GH y utilizando un solo núcleo !!!.
El mismo cálculo en un PC con cpu AMD A10-8700P de 64 bits a 1.3GH utilizando los cuatro núcleos tomó 2.5 seg.  , una relación 1:18
Los valores obtenidos fueron :
  • Primes: 455052511
  • Twin primes: 27412679
  • Prime triplets: 5425573
  • Prime quadruplets: 180529
  • Prime quintuplets: 40414
  • Prime sextuplets: 1613
A dia de hoy el mayor valor de pi(x) calculado es para 10^27 = 16352460426841680446427399

19 mayo 2019

Termux : Compilador FreePascal

En termux , además de los lenguajes de la familia gcc, también tenemos disponibles otros lenguajes de programación.
Uno de ellos es el compilador de pascal FreePascal, con un largo recorrido en diferentes sistemas operativos y procesadores.
FreePascal es un paquete estandar de Termux, por lo que instalarlo solo requiere ejecutar :
   pgk install fp-compiler 
A continuación un pequeño programa de ejemplo relacionado con el post anterior de ecuaciones cúbicas:

24 abril 2019

Termux : Soluciones enteras a la ecuación diofántica k = x³+y³+z³

Hace poco leí un interesante artículo en el  blog "La ciencia de la mula francis "  relacionado con la última solución encontrada a las ecuaciones diofánticas k = x³+y³+z³  para números enteros.

Una ecuación tan sencilla requirió tres semanas de un superordenador para encontrar la primera solución conocida de la ecuación 33=k = x³+y³+z³  ...

Si queremos encontrar soluciones enteras a esta ecuación podemos asumir las siguientes premisas:
  • x, y, z números enteros positivos
  • Opción 1:  k = x^3 + y^3 + z^3  (válida para valores pequeños de x,y,z)
  • Opción 2:  k = x^3 - y^3 + z^3 
  • Opción 3: k = x^3 - y^3 - z^3
Hay números que no pueden ser representados por esta ecuación : 4, 5, 13, 14, 22, 23 ,31 ,33, etc. Son números que se pueden expresar como 9*n+4 ó 9*n+5.

Y por otro lado hay números que pueden ser representados por infinitas combinaciones de x,y,z. Por ejemplo, el número 1 puede expresarse mediante la fórmula:
  1= (1 + 9*m^3)^3 + (9*m^4)^3 - (9*m^4 + 3*m)^3

Para comprobar la dificultad de encontrar soluciones a este tipo de ecuaciones desarrollé un pequeño escript utilizando la Opcion 3 en PARI-GP para números menores a 1000.

Después de un dia de cálculo todavía no he encontrado soluciones para muchos números pequeños ( 7, 12, 24, 26, etc).

Por lo visto no es tan sencilla esta ecuación !!!




23 abril 2019

Termux : Factorización de números enteros 2^n+1 (2<=n<=500)

Al igual que en el post anterior, se calcularon las factorizaciones de los números enteros con formato 2^n+1 en el rango 2<=n<=500.

El programa  se ejecutó en una tablet Praga utilizando  un núcleo de los cuatro disponibles.
El tiempo necesario fué de cuatro días, mayor que en el caso anterior ya que es más dificil la factorización de estos números.

El script tiene varias líneas de comandos similares al siguiente:

gmpfac -is -e100,100000,10000 -c2,250+   (en este caso para el número 2^250+1)

20 abril 2019

Termux : Factorización de números enteros 2^n-1 (2<=n<=500)

Se utilizó el emulador  termux en una tablet Praga para factorizar  números enteros con formato  2^n-1 en el rango 2 <= n <= 500 .

Se creó un fichero script  mediante el sistema  PARI-GP para crear comandos de ejecución utilizando la aplicación gmpfac12 (Conrad Curry) (un solo núcleo). Cada línea tiene el formato:

   gmpfac -is -e100,100000,10000 -c2,250-   (en este caso para el número 2^250-1)

El proceso se demoró 3 días en ejecutarse.
Se puede observar que hay líneas con factores que tiene el prefijo (C). En este caso el programa no pudo factorizar dicho número a pesar de usar el algoritmo de factorización ecm con 100  curvas.

La salida del script se enrutó a un fichero texto el cual fué procesado por un programa creado en el lenguaje  free pascal para obtener el formato final:

Termux: ¿ La suma de varios números primos consecutivos es un número primo ? II

La entrada anterior finalizaba con una pregunta: ¿Cual será el máximo de secuencias consecutivas? Pues la respuesta parece ser que no hay ...