desarrollo de un software utilitario a partir de la teoría seno mágico los números primos

13
UNIVERSIDAD MAYOR DE SAN ANDRES Facultad de Ciencias Puras y Naturales Postgrado en Informática Matemática y Encriptación Desarrollo de un Software Utilitario a Partir de la Teoría “Seno Mágico: Los Números Primos” Trabajo Final Presentado a: Dr. Henri Claude Thonon Presentado por: Roger Saravia Aramayo La Paz, Bolivia – 30 de Junio de 2008

Upload: roger-saravia

Post on 14-Apr-2017

158 views

Category:

Science


2 download

TRANSCRIPT

UNIVERSIDAD MAYOR DE SAN ANDRES

Facultad de Ciencias Puras y Naturales

Postgrado en Informática

Matemática y Encriptación

Desarrollo de un Software Utilitario a Partir de la Teoría “Seno Mágico: Los Números Primos”

Trabajo Final

Presentado a: Dr. Henri Claude Thonon

Presentado por: Roger Saravia Aramayo

La Paz, Bolivia – 30 de Junio de 2008

Resumen

En éste proyecto se desarrolla en Visual Basic 32-bits para Windows NT un software utilitario para el cálculo sobre los números primos partiendo de la obra “Seno Mágico: Los Números Primos” propuesta por el autor.

Primero, se plantea lógicamente el problema. Luego, se hace una revisión breve pero esencial del marco teórico. Enseguida, se desarrolla la parte práctica desglosando el código fuente programado a partir de las distintas expresiones matemáticas presentadas en la parte teórica. Usando dicho software, se analizan casos de estudio representativos que involucran a las fórmulas matemáticas más importantes así como a números primos seleccionados a partir de la bibliografía. Finalmente, se presentan algunas conclusiones importantes.

Palabras Clave

NÚMEROS NATURALES, NÚMEROS PRIMOS, TEORÍA DE NÚMEROS, MATEMÁTICA Y ENCRIPTACIÓN, FACTORES, SENO MÁGICO, EXPRESIONES MATEMÁTICAS, EVALUACIÓN DE UNA EXPRESIÓN, EXPRESIÓN

BASE SINUSOIDAL, PRUEBA DE DIVISIBILIDAD, PRUEBA DE PRIMALIDAD, SUMA DE PRIMOS, PRODUCTO DE

PRIMOS, CANTIDAD DE PRIMOS, PROGRAMA DE COMPUTADORA, PROGRAMACIÓN DE FUNCIONES, CICLO

DE CÁLCULO, PRÁCTICA IMPLEMENTACIÓN

1

Índice

1 INTRODUCCIÓN......................................................................................................................................................... 2 1.1 ESCENARIO ............................................................................................................................................................. 2 1.2 PROBLEMA Y ABORDAJE DEL PROBLEMA ............................................................................................................... 2

2 OBJETIVOS .................................................................................................................................................................. 2 3 JUSTIFICACIÓN.......................................................................................................................................................... 2 4 MARCO TEÓRICO...................................................................................................................................................... 3

4.1 SENO MÁGICO: LOS NÚMEROS PRIMOS.................................................................................................................. 3 5 DESARROLLO PRÁCTICO....................................................................................................................................... 5 6 CASOS DE ESTUDIO .................................................................................................................................................. 6

A. FÓRMULA DE DIVISIBILIDAD ....................................................................................................................................... 6 B. PRUEBA DE PRIMALIDAD............................................................................................................................................. 7 C. CANTIDAD DE NÚMEROS PRIMOS ................................................................................................................................ 8 D. SUMA DE NÚMEROS PRIMOS........................................................................................................................................ 9 E. PRODUCTO DE NÚMEROS PRIMOS................................................................................................................................ 9

7 CONCLUSIONES ....................................................................................................................................................... 10 REFERENCIAS.................................................................................................................................................................... 11

2

1 Introducción

1.1 Escenario

El escenario de éste proyecto se extiende en la obra “Seno Mágico: Los Números Primos” propuesta por el autor dentro del campo de la teoría de números que se aplica a su vez en el área de la matemática y encriptación de las ciencias de la computación.

1.2 Problema y Abordaje del Problema

Un problema identificado es la necesidad de un programa de computadora que permita realizar algunos cálculos y resolver algunos casos de estudio a partir de las expresiones matemáticas construidas en dicho estudio sobre los números primos. Se abordará éste problema mediante la programación en Visual Basic de un software Windows NT 32-bits a partir de dichas expresiones matemáticas.

2 Objetivos

Programar la expresión matemática para la prueba de divisibilidad.

Programar la expresión matemática para la prueba de primalidad.

Programar la expresión matemática para la suma de números primos.

Programar la expresión matemática para el producto de números primos.

Programar la expresión matemática para la cantidad de números primos.

Resolver casos de estudio representativos usando el software desarrollado.

3 Justificación

La justificación es mayormente tecnológica porque con el desarrollo y aplicación de éste software se pretende evidenciar de modo práctico la teoría: “Seno Mágico: Los Números Primos”.

3

4 Marco Teórico

4.1 Seno Mágico: Los Números Primos

Partiendo de la función seno se puede lograr una poderosa expresión base que permite la construcción de expresiones reveladoras con relación a los números primos. Dados dos números naturales a y b, ésta expresión base permite verificar si b es factor de a:

( )( )⎩⎨⎧

=ab

abba

defactor es no si1 defactor es si0

/sinsign 2 π (1)

Un número primo x es un numero natural x que no tiene ningún factor entre 2 y 1−x , inclusive. Aplicando la productoria de la expresión (1) en este rango, se tiene:

( )( )⎩⎨⎧

=∏−

= primo número es si1primo número es no si0

/sinsign1

2

2

xx

ixx

i

π (2)

Ahora se va a modificar a partir de la expresión (1) para invertir sus salidas y para que más adelante permita la construcción de una expresión más avanzada que la (2). Entonces:

( )( )⎩⎨⎧

=−ab

abba

defactor es si1 defactor es no si0

/sinsign1 2 π (3)

Ya se recordó que un número primo x es aquel que no tiene ningún factor entre 2 y 1−x , inclusive. Aplicando la sumatoria de la expresión (3) en este rango, se tiene:

( )( )( )⎩⎨⎧

=−∑−

= xfxfx

ixx

i tieneque factores de número el es y primo es no siprimo número es si0

/sinsign11

2

2 π (4)

La gráfica (i1) corresponde a la expresión (4) para los primeros treinta y cinco números naturales. Respecto a ésta gráfica, un par de apuntes:

1) Los puntos sobre el eje x se corresponden con los números primos.

4

2) Cualquier otro punto se corresponde con un x no primo. Por ejemplo, para 12=x se tiene 4=f ; esto indica que 12 tiene cuatro factores a excepción de la unidad y de si mismo. Y ciertamente, sus cuatro factores son: 2, 3, 4 y 6.

(i1)

A partir de la expresión (2) se puede construir una expresión que da la cantidad de números primos existentes entre 2 y n, inclusive:

( )( )∑ ∏=

=⎟⎟⎠

⎞⎜⎜⎝

⎛n

i

i

j

ji2

1

2

2 /sinsign π (5)

Modificando la (5) se puede llegar a una expresión que da la sumatoria de los primos existentes entre 2 y n, inclusive:

( )( )∑ ∏=

=⎟⎟⎠

⎞⎜⎜⎝

⎛⋅

n

i

i

j

jii2

1

2

2 /sinsign π (6)

Y la expresión (7) nos da el producto de los primos existentes entre 2 y n, inclusive:

5

( )( )∏=

⎟⎟

⎜⎜

⎛∏−

=n

i

jii

ji2

/sinsign1

2

2 π

(7)

En todo este desarrollo es interesante observar que los números primos se vinculan con la función del seno.

5 Desarrollo Práctico

Primero, se ha programado una función que retorna el valor de la constante PI, una función de redondeo y una función común f1; esto, se muestra en el listado de a continuación:

Function pi() pi = 4 * Atn(1) End Function Function round(v, d) t1 = 10 ^ d round = CLng(v * t1) / t1 End Function Function f1(x, y) t = Sin(x * pi() / y) f1 = round(t, 4) End Function

Luego, se ha programado un conjunto de funciones para el cálculo de las expresiones (1) a la (7) según se muestra en el listado de a continuación:

Function expr1(a, b) expr1 = Sgn(f1(a, b) ^ 2) End Function

( )( )⎩⎨⎧

=ab

abba

defactor es no si1 defactor es si0

/sinsign 2 π

Function expr2(x) p = 1 For i = 2 To x - 1 p = p * expr1(x, i) Next i expr2 = p End Function

( )( )⎩⎨⎧

=∏−

= primo número es si1primo número es no si0

/sinsign1

2

2

xx

ixx

i

π

Function expr3(a, b) expr3 = 1 - expr1(a, b) End Function

( )( )⎩⎨⎧

=−ab

abba

defactor es si1 defactor es no si0

/sinsign1 2 π

6

Function expr4(x) s = 0 For i = 2 To x - 1 s = s + expr3(x, i) Next i expr4 = s End Function

( )( )( )⎩⎨⎧

=−∑−

= primo es no siprimo número es si0

/sinsign11

2

2

xfx

ixx

Function expr5(n) s = 0 For i = 2 To n p = 1 For j = 2 To i - 1 p = p * expr1(i, j) Next j s = s + p Next i expr5 = s End Function

( )( )∑ ∏=

=⎟⎟⎠

⎞⎜⎜⎝

⎛n

i

i

j

ji2

1

2

2 /sinsign π

Function expr6(n) s = 0 For i = 2 To n p = 1 For j = 2 To i - 1 p = p * expr1(i, j) Next j s = s + i * p Next i expr6 = s End Function

( )( )∑ ∏=

=⎟⎟⎠

⎞⎜⎜⎝

⎛⋅

n

i

i

j

jii2

1

2

2 /sinsign π

Function expr7(n) p = 1 For i = 2 To n q = 1 For j = 2 To i - 1 q = q * expr1(i, j) Next j p = p * i ^ q Next i expr7 = p End Function

( )( )∏=

⎟⎟

⎜⎜

⎛∏−

=n

i

jii

ji2

/sinsign1

2

2 π

6 Casos de Estudio

A. Fórmula de Divisibilidad

Usando la expresión (3), determinar si el entero 510510 es factor de 6469693230.

7

Para esto, se elige la expresión (3) del combo de fórmulas y se introducen los anteriores naturales según se ilustra a continuación. Luego, se presiona “Calcular” y se obtiene un valor de 1 (uno) como resultado de la evaluación de la expresión; lo cual confirma que, 510510 es factor de 6469693230. Y evidentemente, 6469693230 es el producto de 510510 por 12673.

Ilustración i2. Cuadro de diálogo para el caso de estudio A.

B. Prueba de Primalidad

Usando la expresión (4), determinar si el natural 15485863 es un número primo.

Primero, se elige la expresión (4) del combo de fórmulas matemáticas y se introduce el valor anterior según se muestra a continuación. Luego, se presiona el botón “Calcular”, se espera un momento y se obtiene un valor de 0 (cero) como resultado de la evaluación de la expresión; lo cual implica que 15485863 sí es un número primo.

8

Ilustración i3. Cuadro de diálogo para el caso de estudio B.

C. Cantidad de Números Primos

Usando la expresión (5), determinar la cantidad de primos existentes hasta el entero 1000 inclusive.

Primero, se elige la expresión (5) del combo de fórmulas y se introduce el valor 1000 según se muestra a continuación. Se presiona el botón “Calcular”, se espera y se obtiene un valor de 168 como resultado de la evaluación de la expresión; lo cual indica que existen 168 números primos hasta el natural 1000 inclusive. Esto es fácilmente verificable mediante revisión bibliográfica.

Ilustración i4. Cuadro de diálogo para el caso de estudio C.

9

D. Suma de Números Primos

Usando la expresión (6), calcular la suma de todos los primos existentes hasta el entero 1000 inclusive.

Primero, se elige la expresión (6) del combo de fórmulas y se introduce el valor 1000 según se muestra a continuación. Se presiona “Calcular”, se espera y se obtiene un valor de 76127 como resultado de la evaluación de la expresión; lo cual indica que 76127 es el valor de la suma de los 168 números primos existentes hasta el natural 1000 inclusive. Esto es fácilmente verificable mediante revisión bibliográfica.

Ilustración i5. Cuadro de diálogo para el caso de estudio D.

E. Producto de Números Primos

Usando la expresión (7), calcular el producto de todos los números primos existentes hasta el entero 35 inclusive.

Para esto, se elige la expresión (7) del combo de fórmulas y se introduce el valor 35 según se muestra a continuación. Se presiona el botón de comando “Calcular”, se espera y se obtiene 200560490130 como resultado de la evaluación de la expresión; lo cual implica que 200560490130 es el producto total de los 11 números primos existentes hasta el natural 35 inclusive. Esto es fácilmente verificable mediante revisión bibliográfica. Nótese que la expresión (7) produce números muy grandes de manera bastante rápida.

10

Ilustración i6. Cuadro de diálogo para el caso de estudio E.

7 Conclusiones

La obra “Seno Mágico: Los Números Primos” se basa en una expresión básica sinusoidal que a su vez puede ser empleada para la prueba de divisibilidad entre dos naturales. Todas las expresiones matemáticas de dicha teoría se construyen sucesivamente a partir de ésta expresión básica.

Aunque fuese posible definir una función unitaria en vez de una expresión base sinusoidal, el desafío y contribución de ésta obra radica en la inclusión de la función trigonométrica del seno.

Una de las expresiones más útiles es la (4) porque brinda una opción de prueba de primalidad que retorna 0 (cero) cuando el natural en cuestión es primo y que retorna otro valor correspondiente a la cantidad de divisores (a excepción de 1 y de sí mismo) cuando el natural en cuestión no es primo.

Una ventaja que puede apreciarse en todas éstas expresiones, radica en su práctica implementación en programas de computadora como se apreció en éste documento.

Las fórmulas o expresiones matemáticas expuestas y probadas en éste documento requieren un ciclo de cálculo que hace uso de todos los naturales precedentes al número en cuestión; razón por la cual, son expresiones ineficientes así como están. Quizá con matemáticas más avanzadas se puedan lograr simplificaciones importantes en estas expresiones para que puedan volverse más eficientes.

Como se pudo apreciar en los casos de estudio, éstas fórmulas retornan valores certeros dentro del rango numérico disponible según la plataforma; es decir, el tipo de datos más extenso disponible en un cierto lenguaje de programación como el Visual Basic 32-bits es aún insuficiente cuando se trata del cálculo sobre números primos; lo cual no es raro, porque el hecho de que los primos sean difíciles de alcanzar hace que sean muy usados en matemática y encriptación.

11

Referencias

D. A. R. (2005) “Números Primos”. [En red]. Disponible en: http://mimosa.pntic.mec.es/jgomez53/matema/conocer/primos.htm

ROGER SARAVIA (2006) “Seno Mágico: Los Números Primos”. Universidad Privada Boliviana (UPB). La Paz – Bolivia.

PETER NORTON (2002) "New Inside The PC". Segunda edición. SAMS. Indiana - USA.

MICROSOFT CORP (1999) “Microsoft Visual Basic Programming System for Windows NT”. USA.