TARDÍGRADOS

Ciencia en español

Una fórmula que calcula el n-ésimo número primo

Posted by Albert Zotkin en febrero 25, 2013

El Teorema de Wilson dice que si p es un número primo, entonces (p-1)! + 1 es múltiplo de p. Es decir:

\displaystyle  (p-1)! \equiv -1 \mod{p}  (1)

Basándomos en este teorema es posible construir una función tal que:

\displaystyle  F(n)=\left \lfloor \cos^2 \left (\pi \cfrac{(n-1)! +1}{n}\right )  \right \rfloor = \begin{cases}  1    & \small \text{si \textit{n}=1 \'o \textit{n} es primo} \\  0 & \small \text{en caso contrario}  \end{cases}   (2)
donde \lfloor x \rfloor es la función suelo. Pero, es precisamente esta función suelo lo que menos me gusta de esta fórmula (2). Por lo tanto, la pregunta es si es posible modificar esa función (2) tal que no aparezca ningún tipo de función suelo o función techo. La respuesta es sí. Fijémonos en la siguiente función, para n \ge 1:

\displaystyle  G(n)=\sin^2 \left (\pi \cfrac{(n-1)! +1}{n} \right )  = \begin{cases}  \sin^2 (\frac{\pi}{n})    & \small \text{si \textit{n} no es primo} \\  0 & \small \text{si \textit{n} es primo}  \end{cases}   (3)
Es decir, para n \ge 1 la función G(n) nos da la secuencia

\displaystyle   G(n)= \left \{0,\ 0,\ 0,\ \cfrac{1}{2},\ 0,\ \cfrac{1}{4},\ 0,\ \sin^2\left(\cfrac{\pi }{8}\right),\ \sin^2\left(\cfrac{\pi }{9}\right),\ \cfrac{1}{16} \left(-1+\sqrt{5}\right)^2, \ \dots \right \}  (4)
Por lo tanto, sólo tenemos que dividir G(n) por \sin^2 \pi/n , para obtener :

\displaystyle  H(n)=\cfrac{\sin^2 \left ( \pi \cfrac{(n-1)! +1}{n} \right )}{\sin^2 \frac{\pi}{n}}  = \begin{cases}  1    & \small \text{si \textit{n} no es primo} \\  0 & \small \text{si \textit{n} es primo}  \end{cases}   (5)

Es decir, ya que para n=1 da indeterminado, para n \ge 2 la función H(n) nos da la secuencia

\displaystyle  H(n)= \left \{0,\ 0,\ 1,\ 0,\ 1,\ 0,\ 1,\ 1,\ 1, \ \dots \right \}  (6)

Pero si lo que estamos buscando es la función

\displaystyle   P(n)= \begin{cases}  0    & \small \text{si \textit{n} no es primo} \\  1 & \small \text{si \textit{n} es primo}  \end{cases}   (7)

Sólo tenemos que establecerla como complementaria de H(n):

\displaystyle   \boxed {P(n)= 1- H(n) = 1 - \cfrac{\sin^2 \left (\pi \cfrac{(n-1)! +1}{n} \right )}{\sin^2 \frac{\pi}{n}}}  (8)

con lo cual hemos obtenido una función similar a F(n), pero sin la función suelo.



Algunos consejos para su uso en Mathematica

Define la función que genera la lista (cero si no es número primo), por ejemplo esta función :
  

In[1]:=

Define ahora la función que quitará los ceros, por ejemplo esta :

In[2]:=

Veamos ahora algunos ejemplos. Primero veamos cómo la función F[x] genera una lista de números primos :

In[3]:=

Out[3]=

Veamos ahora un ejemplo de cómo la función P[x] quita los ceros . Pero, antes de eso quiero advertir que la función P[x] es muy ineficiente para esa tarea (tarda mucho) y sólo debe ser considerada como una curiosidad matemática, nada más. Aconsejo no usarla en calculos prácticos con Mathematica. Por lo tanto, como muestra, sólo la usaré para un cálculo hasta n=10:

In[4]:=

Out[4]=

Para quien posea curiosidad por saber cúanto tiempo tarda Mathematica en hacer esta última tarea, haré lo siguiente :

In[5]:=

Out[5]=

Lo cual significa que esta última operación ha tardado unos 20 segundos en realizarse (una velocidad muy pobre si tenemos en cuenta que sólo calculó hasta n = 10).

Pero, si aún deseamos quitar eficientemente los ceros a la lista que genera la función F[x], podemos usar el algoritmo Deletecases, así:

In[6]:=

Out[6]=


Otros ejemplos de funciones generadoras:

In[9]:=

In[11]:=

Out[11]=

In[12]:=

In[13]:=

Out[13]=

4 comentarios to “Una fórmula que calcula el n-ésimo número primo”

  1. pepeman6 said

    Saludos de nuevo estimado Albert zotkin,primero lo felicito por el interesante articulo que acaba de publicar en relación a la fórmula que calcule el enésimo número primo.Despues de enviarle un caluroso saludo paso a lo siguiente:

    Quisiera pedirle de gran favor que me ayudase respecto a la función que me proporcionó para quitar los ceros de una lista de numeros enteros, el dia de ayer estuve trabajando en wolfram matematica para echarla andar en relacion a mi funcion generadora, pero no obtuve los resultados deseados, a la mejor no programé bien la función en el wolfram matemática por lo cual le pediria de gran favor que me mostrara a traves de una imagen como debe quedar en el wolfram y con un ejemplo por favor se lo agradeceria mucho.

    Otra inquietud es que me proporcionará el dato en relación en que año desarrolló usted su función quita ceros, todo esto para incluirla en mi articulo en el que estoy trabajando.

    Sin mas por el momento me despido con gratitud al infinito, muchas gracia gran genio! y una disculpa por mis inquietudes jejeje, pero sé que puedo contar con usted.

  2. pepeman6 said

    Muchas Gacias Zotkin, le agradezco muchisimo sus aportes, en verdad mi admiración y respeto por su sabiduria crece tanto como la función exponencial, un abrazo descde mexico.Estoy por culminar un artículo en relación a los números primos, usted será el primero en compartirselo y me encantaria que me diera su sabia opinion.
    MUCHAS GRACIAS!

  3. pepeman6 said

    Saludos Albert Zotkin, este es el enlace al articulo que acabo de publicar, ojala de gran favor pudiera darme su punto de vista:

    http://misterionumerosprimos.blogspot.mx/2013/02/la-criba-de-fibonacci-para-numeros.html

    y mi blog donde publico información es:

    http://misterionumerosprimos.blogspot.mx/

    SALUDOS, GRACIAS!

  4. me gusto y es fácil de programar

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: