SlideShare una empresa de Scribd logo
1 de 10
COLEGIO NACIONAL “AMAZONAS”
PRUEBA DEL TERCER PARCIAL DE INFORMÁTICA
PROYECTO:
NUMEROS PRIMOS
NOMBRE:
DENNIS CORREA
CURSO:
5to CONTABILIDAD
SECCIÓN:
NOICTURNO
LIC. MONICA BARRAGÁN
AÑO LECTIVO: 2012-2013
Números primos
Un número primo es un número entero mayor que cero, que tiene exactamente
dos divisores positivos. También podemos definirlo como aquel número entero
positivo que no puede expresarse como producto de dos números enteros
positivos más pequeños que él, o bien, como producto de dos enteros positivos de
más de una forma. Conviene observar que con cualquiera de las dos definiciones
el 1 queda excluido del conjunto de los números primos.
Ejemplos: a) El 7 es primo. Sus únicos divisores son 1 y 7. Sólo puede
expresarse como producto de 7·1.
b) El 15 no es primo. Sus divisores son 1, 3, 5 y 15. Puede
expresarse como 3·5. (y también como 15·1)
El término primo no significa que sean parientes de alguien. Deriva del latín
"primus" que significa primero (protos en griego). El teorema fundamental de la
aritmética afirma que todo número entero se expresa de forma única como
producto de números primos. Por eso se les considera los "primeros", porque a
partir de ellos obtenemos todos los demás números enteros. (El 15 se obtiene
multiplicando los primos 3 y 5)
Los 25 primeros números primos son 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37,
41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89 y 97, que son todos los primos
menores que 100.
En la siguiente tabla tenemos todos los primos menores que 1000, que hacen
un total de 168 (21×8)
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73
79 83 89 97 10
1
10
3
10
7
10
9
11
3
12
7
13
1
13
7
13
9
14
9
15
1
15
7
16
3
16
7
17
3
17
9
18
1
19
1
19
3
19
7
19
9
21
1
22
3
22
7
22
9
23
3
23
9
24
1
25
1
25
7
26
3
26
9
27
1
27
7
28
1
28
3
29
3
30
7
31
1
31
3
31
7
33
1
33
7
34
7
34
9
35
3
35
9
36
7
37
3
37
9
38
3
38
9
39
7
40
1
40
9
41
9
42
1
43
1
43
3
43
9
44
3
44
9
45
7
46
1
46
3
46
7
47
9
48
7
49
1
49
9
50
3
50
9
52
1
52
3
54
1
54
7
55
7
56
3
56
9
57
1
57
7
58
7
59
3
59
9
60
1
60
7
61
3
61
7
61
9
63
1
64
1
64
3
64
7
65
3
65
9
66
1
67
3
67
7
68
3
69
1
70
1
70
9
71
9
72
7
73
3
73
9
74
3
75
1
75
7
76
1
76
9
77
3
78
7
79
7
80
9
81
1
82
1
82
3
82
7
82
9
83
9
85
3
85
7
85
9
86
3
87
7
88
1
88
3
88
7
90
7
91
1
91
9
92
9
93
7
94
1
94
7
95
3
96
7
97
1
97
7
98
3
99
1
99
7
Póster con los números primos hasta 1000 (pdf) Listado con los primos
menores que 1.000.000 (txt)
Para ver los 10.000 primeros números primos pincha aquí
Primos en el anillo de los enteros de Gauss
OBJETIVO
Cómo averiguar si un número es primo.
El algoritmo más sencillo que puede utilizarse para saber si un número n es
primo es el de la división. Se trata de ir probando para ver si tiene algún divisor
propio. Para ello vamos dividiendo el número n entre 2, 3, 4, 5, ... , n-1. Si alguna
de las divisiones es exacta (da resto cero) podemos asegurar que el número n es
compuesto. Si ninguna de estas divisiones es exacta, el número n es primo. Este
método puede hacerse más eficiente observando simplemente, que si un número
es compuesto alguno de sus factores (sin contar el 1) debe ser menor o igual que
√ n. Por lo tanto, el número de divisiones a realizar es mucho menor. Sólo hay
que dividir entre 2, 3, 4, 5, ... , [√ n]. En realidad, bastaría hacer las divisiones
entre los números primos menores o iguales que √ n.
Ejemplo: Para probar que 227 es primo sabiendo que √227 = 15'0665... basta
con ver que no es divisible entre 2, 3, 5, 7, 11 y 13.
Este procedimiento resulta eficiente para números pequeños o que tienen
factores pequeños. Sin embargo si el número tiene por ejemplo unas 20 cifras y
es primo, habrá que realizar miles de millones de divisiones para comprobarlo.
Aunque un ordenador pueda realizar millones de divisiones en un segundo, el
tiempo necesario es bastante considerable. Y cuando el número de dígitos
aumenta el tiempo necesario ¡¡crece de forma exponencial!!
Ejemplo práctico: Supongamos que queremos saber si un número de unas 50 cifras es primo. La raíz
cuadrada de un número de este orden está en torno a 1025
. Si un ordenador hace 1000 millones de divisiones
por segundo, necesitará 1025
/109
segundos; es decir, 1016
segundos. Este tiempo equivale, aproximadamente, a
1'6*1014
minutos, que son 2'7*1012
horas, o también 1'16*1011
días, aproximadamente 3'17*108
años. Que
para hacer esto se necesiten 317.097.920 años se me antoja una tarea poco recomendable. Y si nos
decidiésemos a llevarla a cabo, ¿sería útil esta información pasado todo este tiempo? O más drástico todavía,
¿seguiría existiendo nuestra especie entonces?
Debemos pues, buscar una alternativa que nos permita responder a este
problema de una forma más favorable; necesitamos un algoritmo más eficiente.
Una respuesta puede ser el teorema pequeño de Fermat. Este teorema afirma
que si n es primo y mcd(a,n) = 1, entonces an-1
≡ 1 (mod n). Hay que tener en
cuenta que la exponenciación modular puede realizarse en un tiempo bastante
favorable, si se hace de forma adecuada (hay algoritmos que nos dan la respuesta
en tiempo polinómico)
Ejemplo: Queremos comprobar si el número 15 es primo o no (utilizando esta
propiedad). Tomamos a = 2, n = 15, y evaluamos 214
(mod 15). La respuesta es
214
≡ 4 (mod 15). Podemos asegurar entonces que 15 es compuesto. Probemos
con a = 2, n = 341, evaluamos 2340
(mod 341) y obtenemos que 2340
≡ 1 (mod
341). Esto no nos permite deducir que 341 sea compuesto, pero tampoco que sea
primo. Al probar con a=3 tenemos 3340
≡ 56 (mod 341), lo cual implica que 341
es compuesto.
A los números que se comportan como el 341 en el ejemplo anterior se les
llama pseudoprimos para la base 2 (se comportan como un primo para a=2). Este
comportamiento es bastante más peculiar peculiar para algunos números.
Tomando por ejemplo a=2 y n=561, obtenemos que 2560
≡ 1 (mod 561), 3560
≡ 1
(mod 561), 5560
≡ 1 (mod 561) y así con todas las bases con las que probemos.
Es decir, se comporta como un primo para cualquier base que elijamos. Sin
embargo, 561 es compuesto (561 = 3·11·17). A los números que como éste, son
pseudoprimos para todas las bases se les llama números de Carmichael. Los
números de Carmichael menores que 100.000 son 561, 1105, 1729, 2465, 2821,
6601, 8911, 10585, 15841, 29341, 41041, 46657, 52633, 62745, 63973 y 75361.
Desde luego, no parecen muy abundantes. Los expertos se preguntaban en los
años 80 si serían un conjunto finito, con lo cual una vez identificados se podrían
"evitar" fácilmente, aunque la creencia generalizada apuntaba a que el conjunto
era infinito. Se demostró que si un número es de Carmichael debe ser libre de
cuadrados y producto de al menos tres primos distintos. En 1994, Alford,
Granville y Pomerance demostraron que existen infinitos números de
Carmichael. De hecho, su resultado indica que para n suficientemente grande
C(n) > n2/7
, donde C(n) es la cantidad de números de Carmichael menores que n.
Para evitar este contratiempo, podemos recurrir a un teorema un poco más fino
debido a Euler. Este resultado afirma que si n es primo y mcd (a,n)=1, entonces
a(n-1)/2
≡ ±1 (mod n). Con esto evitamos que algunos números compuestos puedan
pasar por primos como ocurre utilizando el teorema pequeño de Fermat.
Ejemplo: Para comprobar que 91 es compuesto basta ver 245
≡ 57 (mod 91). ¿Y
que pasa con un número de Carmichael como el 561?. Veamos 2280
≡ 1(mod
561), pero 5280
≡ 67 (mod 561). Parece que esto funciona.
Pero todavía podemos afinar un poco más. La idea es que si n es primo,
entonces Zn es un cuerpo. Y en un cuerpo las únicas raíces cuadradas de 1 son 1 y
-1. En el último ejemplo estamos diciendo que Z561 no es un cuerpo porque en él,
la raíz de 1 es 67, y por tanto 561 no es primo. Si tomamos n-1 y lo dividimos
entre 2 de forma sucesiva, mientras sea posible, estamos extrayendo raíces
cuadradas y se trata de comprobar si los resultados dan siempre 1 ó -1. Esto da
lugar al test de Miller-Rabin.
Ejemplo: Tomando n = 561 hacemos 2280
(mod 561) ≡ 1 , 2140
(mod 561) ≡ 67,
que continuaría con 270
y 235
, pero ya no es necesario calcularlos porque
tenemos que la raíz cuadrada de 1 es 67 (mod 561). Por tanto, 561 es compuesto.
Si al llegar a 235
no obtenemos un resultado distinto de +1 ó -1, tendríamos que
elegir otra base. Y ahí es donde podemos tener dificultades, porque si n es
bastante grande quizá tengamos que probar con muchas bases y la respuesta
tardará en llegar. Y podemos empezar a preguntarnos si la tardanza se debe a que
n es primo o porque es un compuesto que se comporta como un primo para un
conjunto "grande" de bases. ¿Qué debemos hacer entonces? La solución es
determinar el número de bases con las que tenemos que probar para asegurar que
un número compuesto no pase la prueba como si fuese primo.
Definiciones: Si un entero n compuesto e impar verifica la congruencia de Euler
para la base b, entonces n es un pseudoprimo de Euler para la base b. Asímismo,
si n pasa el test de Miller-Rabin para la base b, entonces n es un pseudoprimo
fuerte para la base b. Los siguientes resultados nos dan la respuesta a la cuestión
del párrafo anterior.
Proposición: Si n es compuesto e impar, al menos la mitad de las bases b que
verifican 0<b<n, no satisfacen la congruencia de Euler.
Teorema (Rabin): Si n es un entero compuesto impar, entonces n es un
pseudoprimo fuerte para la base b, para a lo sumo un 25% de las posibles bases
que verifican 0 < b < n, mcd(b,n) = 1.
Desde luego que el teorema anterior no es para tirar cohetes. Probar con un
25% de las bases es algo descomunal si n es un número grande. Sin embargo,
también hay que decir, que experimentalmente se ha comprobado que el test es
mucho más eficiente de lo que indica la acotación del 25%. Es decir, cuando el
número es compuesto, basta probar con unas pocas bases (la mayoría de veces
con una sola) para demostrar que el número es compuesto. Si probamos con
varias bases y nuestro número pasa el test, la probabilidad de que sea primo es
muy pequeña. Y se puede elegir el número de bases que queramos de manera que
la probabilidad sea menor que una cota prefijada de antemano.
Yendo un poco más lejos, hay un resultado de Miller basado en la hipótesis
generalizada de Riemann, que afirma lo siguiente:
Teorema (Miller, 1976): Si la hipótesis generalizada de Riemann es cierta y n es
un entero compuesto impar, entonces n no pasa el test de Miller-Rabin para
alguna base b < 2·log2
n (¿¿teorema de bach, aukemy, montgomery 1985??)
Este resultado implicaría un test de primalidad en tiempo polinómico del orden
de O(log5
n).
En la tabla de abajo podemos ver la cantidad de números de Carmichael y
pseudoprimos para la base 2. Por ejemplo, el primer 1 de la fila que comienza
con 103
indica que sólo hay un número de Carmichael menor que 1000, y el 3 que
sigue que hay 3 pseudoprimos para la base 2 menores que 1000.
( Nota: Los pseudoprimos de Euler también son llamados a veces pseudoprimos de Euler-Jacobi )
10n
Carmichael psprimos(2) pspEuler(2) pspFuerte(2)
101
0 0 0 0
102
0 0 0 0
103
1 3 1 0
104
7 22 12 5
105
16 78 36 16
106
43 245 114 46
107
105 750 375 162
108
255 2057 1071 488
109
646 5597 2939 1282
1010
1547 14884 7706 3291
1011
3605 38975 20417 8607
1012
8241 101629 53332 22407
1013
19279 264239 124882 58892
Tabla 2: Pseudoprimos y números de Carmichael
Los primeros pseudoprimos para la base 2 son 341, 561, 645, 1105, 1387,
1729, 1905, 2047, 2465, 2701, ...
Los primeros pseudoprimos para la base 3 son 91, 121, 286, 671, 703, 949,
1105, 1541, 1729, 1891, 2821,...
Los primeros pseudoprimos para la base 5 son 4, 124, 217, 561, 781, 1541,
1729, 1891, ...
Los primeros pseudoprimos de Euler para la base 2 son 561, 1105, 1729, 1905,
2047, 2465, ...
Los primeros pseudoprimos de Euler para la base 3 son 121, 703, 1729, 1891,
2821, 3281, 7381, ...
Los primeros pseudoprimos fuertes para la base 2 son 2047, 3277, 4033, 4681,
8321, 15841, 29341, 42799, 49141, 52633, 65281, 74665, 80581, 85489, 88357,
90751, ...
Los primeros pseudoprimos fuertes para la base 3 son 121, 703, 1891, 3281,
8401, 8911, 10585, 12403, 16531, 18721, 19345, 23521, 31621, 44287, 47197,
55969, 63139, 74593, 79003, 82513, 87913, 88573, 97567, ...
Estos ejemplos nos permiten ver que si en lugar de la base 2 utilizamos las
bases 2 y 3, los números que pueden pasar el test siendo compuestos son muchos
menos. Y si tomamos más bases todavía, los resultados mejoran
considerablemente. Por ejemplo, sólo hay un pseudoprimo fuerte para las bases
2, 3, 5 y 7 menor que 25·109
, y este número es 3,215,031,751.
La sucesión de los números impares más pequeños que pasan el test de Miller-
Rabin usando los primeros k números primos para k = 1, 2, 3,... está dada por
2047, 1373653, 25326001, 3215031751, 2152302898747, 3474749660383,
341550071728321, 341550071728321, ... (Sloane A014233; Jaeschke 1993). Por
lo tanto, el test es totalmente determinista si usamos los siete primeros números
primos (con 8 no da ninguna mejora) para números menores menores de
3,4·10^14.
Lo que se hace en la práctica para números muy grandes es tomar una serie de
bases al azar y comprobar si se verifican las congruencias. Si no se verifica en
algún caso, el número es compuesto con total seguridad. Si se verifican todas,
hay una "sospecha" muy grande de que el número es primo, aunque no puede
asegurarse. La probabilidad de error puede hacerse tan pequeña como se quiera
con solo coger un número suficiente de bases.
Gracias a los trabajos de Pomerance, Selfridge y Wagstaff (1980) y Jaeschke
(1993) podemos elaborar tests de rápida ejecución y completamente
deterministas (usando Miller-Rabin) si consideramos números hasta un cierto
tamaño:
Para números menores que 25,326,001 basta probar con las bases 2,
3 y 5.
Para números menores que 4,759,123,141 basta probar con las
bases 2, 7 y 61.
Para números menores que 2,152,302,898,747 basta probar con las
bases 2, 3, 5, 7 y 11.
Para números menores que 341,550,071,728,321 basta probar con
las bases 2, 3, 5, 7, 11, 13 y 17.
En 1980, Adleman publica un artículo titulado "On distinguishing prime
numbers from composite numbers". Sus resultados son mejorados por
Pomerance, Rumely, Cohen, H.W. Lenstra y A.K. Lenstra. Esta trabajo conjunto
junto con el teorema que viene a continuación dan lugar a un test de primalidad
conocido como APR (hay más de una versión de este test)
Teorema (Odlyzko-Pomerance, 1982): Existe una constante c>0 efectivamente
computable tal que para todo n > ee
existe un entero positivo t que satisface:
i) t es libre de cuadrados.
ii) 0 < t < (log n)c·log(log(log n))
y tal que s(t) > √ n , donde s(t) = Π { q ∈ Z+
/ q
primo y q-1 divisor de t }
MARCO TEÓRICO
Cómo averiguar si un número es primo.Un número primo es un número entero mayor que
cero, que tiene exactamente dos divisores positivos.
También podemos definirlo como aquel número
entero positivo que no puede expresarse como
producto de dos números enteros positivos más
pequeños que él, o bien, como producto de dos
enteros positivos de más de una forma.
NUMEROS PRIMOS
Ejemplos: a) El 7 es primo. Sus únicos
divisores son 1 y 7. Sólo puede expresarse
como producto de 7·1.
Gracias a los trabajos de Pomerance, Selfridge y Wagstaff (1980) y
Jaeschke (1993) podemos elaborar tests de rápida ejecución y
completamente deterministas (usando Miller-Rabin) si
consideramos números hasta un cierto tamaño:
Para números menores que 25,326,001 basta probar con las bases 2,
3 y 5.
Para números menores que 4,759,123,141 basta probar con las bases
2, 7 y 61.
Ejemplo: Para probar que
227 es primo sabiendo que
√227 = 15'0665... basta con
ver que no es divisible entre
2, 3, 5, 7, 11 y 13.
El algoritmo más sencillo que
puede utilizarse para saber si un
número n es primo es el de la
división. Se trata de ir probando
para ver si tiene algún divisor
propio. Para ello vamos
dividiendo el número n entre 2,
3, 4, 5, ... , n-1. Si alguna de las
divisiones es exacta (da resto
cero) podemos asegurar que el
número n es compuesto.
Trab dennis informatica

Más contenido relacionado

La actualidad más candente

Sucesiones
SucesionesSucesiones
Sucesionesrojasmat
 
Metodo de resolucion de ecuaciones
Metodo de resolucion de ecuacionesMetodo de resolucion de ecuaciones
Metodo de resolucion de ecuacionesangiegutierrez11
 
Series infinitas carlos fuentes
Series infinitas carlos fuentesSeries infinitas carlos fuentes
Series infinitas carlos fuentesPSM san cristobal
 
La Ecuación de Primer Grado ccesa007
La Ecuación de Primer Grado ccesa007La Ecuación de Primer Grado ccesa007
La Ecuación de Primer Grado ccesa007Demetrio Ccesa Rayme
 
Gausssistemadeecuaciones
GausssistemadeecuacionesGausssistemadeecuaciones
Gausssistemadeecuacionesmagarrido2
 
Proyecto de aula matematicas
Proyecto de aula matematicas Proyecto de aula matematicas
Proyecto de aula matematicas ThaliaOrtiz
 
academia sabatina de jovenes talentos
academia sabatina de jovenes talentosacademia sabatina de jovenes talentos
academia sabatina de jovenes talentosRolando Vega
 
Proyecto de matematicas (1)
Proyecto de matematicas (1)Proyecto de matematicas (1)
Proyecto de matematicas (1)FIKHDHKC
 
Paso a paso operaciones expresiones algebraicas
Paso a paso operaciones expresiones algebraicasPaso a paso operaciones expresiones algebraicas
Paso a paso operaciones expresiones algebraicasClaudia_Preciado
 
Psistemasecuaciones
PsistemasecuacionesPsistemasecuaciones
Psistemasecuacionesmagarrido2
 

La actualidad más candente (15)

Sucesiones
SucesionesSucesiones
Sucesiones
 
Metodo de resolucion de ecuaciones
Metodo de resolucion de ecuacionesMetodo de resolucion de ecuaciones
Metodo de resolucion de ecuaciones
 
Series infinitas carlos fuentes
Series infinitas carlos fuentesSeries infinitas carlos fuentes
Series infinitas carlos fuentes
 
Series infinitas
Series infinitasSeries infinitas
Series infinitas
 
Suma y resta
Suma y restaSuma y resta
Suma y resta
 
La Ecuación de Primer Grado ccesa007
La Ecuación de Primer Grado ccesa007La Ecuación de Primer Grado ccesa007
La Ecuación de Primer Grado ccesa007
 
Gausssistemadeecuaciones
GausssistemadeecuacionesGausssistemadeecuaciones
Gausssistemadeecuaciones
 
Proyecto de aula matematicas
Proyecto de aula matematicas Proyecto de aula matematicas
Proyecto de aula matematicas
 
academia sabatina de jovenes talentos
academia sabatina de jovenes talentosacademia sabatina de jovenes talentos
academia sabatina de jovenes talentos
 
Proyecto de matematicas (1)
Proyecto de matematicas (1)Proyecto de matematicas (1)
Proyecto de matematicas (1)
 
Paso a paso operaciones expresiones algebraicas
Paso a paso operaciones expresiones algebraicasPaso a paso operaciones expresiones algebraicas
Paso a paso operaciones expresiones algebraicas
 
Psistemasecuaciones
PsistemasecuacionesPsistemasecuaciones
Psistemasecuaciones
 
Patrones y ecuaciones
Patrones y ecuacionesPatrones y ecuaciones
Patrones y ecuaciones
 
Identidades trigonometricas
Identidades trigonometricasIdentidades trigonometricas
Identidades trigonometricas
 
Identidades trigonometricas
Identidades trigonometricasIdentidades trigonometricas
Identidades trigonometricas
 

Similar a Trab dennis informatica

Conceptos asociados al conjunto de los números enteros
Conceptos asociados al conjunto de los números enterosConceptos asociados al conjunto de los números enteros
Conceptos asociados al conjunto de los números enterosBriggitte Parrales
 
Clasifiacion de los numeros
Clasifiacion de los numerosClasifiacion de los numeros
Clasifiacion de los numerosbenitonicolas
 
Clasifiacion de los numeros
Clasifiacion de los numerosClasifiacion de los numeros
Clasifiacion de los numerosbenitonicolas
 
Relación de divisibilidad (aritmética)
Relación de divisibilidad (aritmética)Relación de divisibilidad (aritmética)
Relación de divisibilidad (aritmética)mathsgosanti
 
Notación científica por Ivanova Maita
Notación científica por Ivanova Maita Notación científica por Ivanova Maita
Notación científica por Ivanova Maita Ivy Rocio
 
Engaños matematicos curiosos
Engaños matematicos curiososEngaños matematicos curiosos
Engaños matematicos curiososMarco Campoverde
 
Números Reales
Números RealesNúmeros Reales
Números Realesbibliomate
 
Demostraciones falsas
Demostraciones falsasDemostraciones falsas
Demostraciones falsasMarcesdh
 
Los 20 algoritmos matemáticos
Los 20 algoritmos matemáticosLos 20 algoritmos matemáticos
Los 20 algoritmos matemáticosIvan
 
Algebra(1) 5° 1 b
Algebra(1) 5° 1 bAlgebra(1) 5° 1 b
Algebra(1) 5° 1 b349juan
 
Matematicas financieras
Matematicas financierasMatematicas financieras
Matematicas financierasAna Ruiz
 

Similar a Trab dennis informatica (20)

Conceptos asociados al conjunto de los números enteros
Conceptos asociados al conjunto de los números enterosConceptos asociados al conjunto de los números enteros
Conceptos asociados al conjunto de los números enteros
 
2024-T14-Primos_Gemelos.ppsx
2024-T14-Primos_Gemelos.ppsx2024-T14-Primos_Gemelos.ppsx
2024-T14-Primos_Gemelos.ppsx
 
Guia 3 reales
Guia 3 realesGuia 3 reales
Guia 3 reales
 
Clasifiacion de los numeros
Clasifiacion de los numerosClasifiacion de los numeros
Clasifiacion de los numeros
 
Clasifiacion de los numeros
Clasifiacion de los numerosClasifiacion de los numeros
Clasifiacion de los numeros
 
3restos numero
3restos numero3restos numero
3restos numero
 
Relación de divisibilidad (aritmética)
Relación de divisibilidad (aritmética)Relación de divisibilidad (aritmética)
Relación de divisibilidad (aritmética)
 
Notación científica por Ivanova Maita
Notación científica por Ivanova Maita Notación científica por Ivanova Maita
Notación científica por Ivanova Maita
 
Documento para el_facilitador_u2
Documento para el_facilitador_u2Documento para el_facilitador_u2
Documento para el_facilitador_u2
 
Engaños matematicos curiosos
Engaños matematicos curiososEngaños matematicos curiosos
Engaños matematicos curiosos
 
Números Reales
Números RealesNúmeros Reales
Números Reales
 
Sucesiones
SucesionesSucesiones
Sucesiones
 
Demostraciones falsas
Demostraciones falsasDemostraciones falsas
Demostraciones falsas
 
Los 20 algoritmos matemáticos
Los 20 algoritmos matemáticosLos 20 algoritmos matemáticos
Los 20 algoritmos matemáticos
 
Algebra(1) 5° 1 b
Algebra(1) 5° 1 bAlgebra(1) 5° 1 b
Algebra(1) 5° 1 b
 
2esoquincena1
2esoquincena12esoquincena1
2esoquincena1
 
6to grado algebra.doc
6to grado algebra.doc6to grado algebra.doc
6to grado algebra.doc
 
Matematicas financieras
Matematicas financierasMatematicas financieras
Matematicas financieras
 
6º grado de primaria - Álgebra 2
6º grado de primaria - Álgebra 26º grado de primaria - Álgebra 2
6º grado de primaria - Álgebra 2
 
6º grado de Primaria - Álgebra 1
6º grado de Primaria - Álgebra 16º grado de Primaria - Álgebra 1
6º grado de Primaria - Álgebra 1
 

Trab dennis informatica

  • 1. COLEGIO NACIONAL “AMAZONAS” PRUEBA DEL TERCER PARCIAL DE INFORMÁTICA PROYECTO: NUMEROS PRIMOS NOMBRE: DENNIS CORREA CURSO: 5to CONTABILIDAD SECCIÓN: NOICTURNO LIC. MONICA BARRAGÁN AÑO LECTIVO: 2012-2013
  • 2. Números primos Un número primo es un número entero mayor que cero, que tiene exactamente dos divisores positivos. También podemos definirlo como aquel número entero positivo que no puede expresarse como producto de dos números enteros positivos más pequeños que él, o bien, como producto de dos enteros positivos de más de una forma. Conviene observar que con cualquiera de las dos definiciones el 1 queda excluido del conjunto de los números primos. Ejemplos: a) El 7 es primo. Sus únicos divisores son 1 y 7. Sólo puede expresarse como producto de 7·1. b) El 15 no es primo. Sus divisores son 1, 3, 5 y 15. Puede expresarse como 3·5. (y también como 15·1) El término primo no significa que sean parientes de alguien. Deriva del latín "primus" que significa primero (protos en griego). El teorema fundamental de la aritmética afirma que todo número entero se expresa de forma única como producto de números primos. Por eso se les considera los "primeros", porque a partir de ellos obtenemos todos los demás números enteros. (El 15 se obtiene multiplicando los primos 3 y 5) Los 25 primeros números primos son 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89 y 97, que son todos los primos menores que 100. En la siguiente tabla tenemos todos los primos menores que 1000, que hacen un total de 168 (21×8) 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 10 1 10 3 10 7 10 9 11 3 12 7 13 1 13 7 13 9 14 9 15 1 15 7 16 3 16 7 17 3 17 9 18 1 19 1 19 3 19 7 19 9 21 1 22 3 22 7 22 9 23 3 23 9 24 1 25 1 25 7 26 3 26 9 27 1 27 7 28 1 28 3 29 3 30 7 31 1 31 3 31 7 33 1 33 7 34 7 34 9 35 3 35 9 36 7 37 3 37 9 38 3 38 9 39 7 40 1 40 9 41 9 42 1 43 1 43 3 43 9 44 3 44 9 45 7 46 1 46 3 46 7 47 9 48 7 49 1 49 9 50 3 50 9 52 1 52 3 54 1 54 7 55 7 56 3 56 9 57 1 57 7 58 7 59 3 59 9 60 1 60 7 61 3 61 7 61 9 63 1 64 1 64 3 64 7 65 3 65 9 66 1 67 3 67 7 68 3 69 1 70 1
  • 3. 70 9 71 9 72 7 73 3 73 9 74 3 75 1 75 7 76 1 76 9 77 3 78 7 79 7 80 9 81 1 82 1 82 3 82 7 82 9 83 9 85 3 85 7 85 9 86 3 87 7 88 1 88 3 88 7 90 7 91 1 91 9 92 9 93 7 94 1 94 7 95 3 96 7 97 1 97 7 98 3 99 1 99 7 Póster con los números primos hasta 1000 (pdf) Listado con los primos menores que 1.000.000 (txt) Para ver los 10.000 primeros números primos pincha aquí Primos en el anillo de los enteros de Gauss OBJETIVO Cómo averiguar si un número es primo. El algoritmo más sencillo que puede utilizarse para saber si un número n es primo es el de la división. Se trata de ir probando para ver si tiene algún divisor propio. Para ello vamos dividiendo el número n entre 2, 3, 4, 5, ... , n-1. Si alguna de las divisiones es exacta (da resto cero) podemos asegurar que el número n es compuesto. Si ninguna de estas divisiones es exacta, el número n es primo. Este método puede hacerse más eficiente observando simplemente, que si un número es compuesto alguno de sus factores (sin contar el 1) debe ser menor o igual que √ n. Por lo tanto, el número de divisiones a realizar es mucho menor. Sólo hay que dividir entre 2, 3, 4, 5, ... , [√ n]. En realidad, bastaría hacer las divisiones entre los números primos menores o iguales que √ n. Ejemplo: Para probar que 227 es primo sabiendo que √227 = 15'0665... basta con ver que no es divisible entre 2, 3, 5, 7, 11 y 13. Este procedimiento resulta eficiente para números pequeños o que tienen factores pequeños. Sin embargo si el número tiene por ejemplo unas 20 cifras y es primo, habrá que realizar miles de millones de divisiones para comprobarlo. Aunque un ordenador pueda realizar millones de divisiones en un segundo, el tiempo necesario es bastante considerable. Y cuando el número de dígitos aumenta el tiempo necesario ¡¡crece de forma exponencial!! Ejemplo práctico: Supongamos que queremos saber si un número de unas 50 cifras es primo. La raíz cuadrada de un número de este orden está en torno a 1025 . Si un ordenador hace 1000 millones de divisiones por segundo, necesitará 1025 /109 segundos; es decir, 1016 segundos. Este tiempo equivale, aproximadamente, a 1'6*1014 minutos, que son 2'7*1012 horas, o también 1'16*1011 días, aproximadamente 3'17*108 años. Que
  • 4. para hacer esto se necesiten 317.097.920 años se me antoja una tarea poco recomendable. Y si nos decidiésemos a llevarla a cabo, ¿sería útil esta información pasado todo este tiempo? O más drástico todavía, ¿seguiría existiendo nuestra especie entonces? Debemos pues, buscar una alternativa que nos permita responder a este problema de una forma más favorable; necesitamos un algoritmo más eficiente. Una respuesta puede ser el teorema pequeño de Fermat. Este teorema afirma que si n es primo y mcd(a,n) = 1, entonces an-1 ≡ 1 (mod n). Hay que tener en cuenta que la exponenciación modular puede realizarse en un tiempo bastante favorable, si se hace de forma adecuada (hay algoritmos que nos dan la respuesta en tiempo polinómico) Ejemplo: Queremos comprobar si el número 15 es primo o no (utilizando esta propiedad). Tomamos a = 2, n = 15, y evaluamos 214 (mod 15). La respuesta es 214 ≡ 4 (mod 15). Podemos asegurar entonces que 15 es compuesto. Probemos con a = 2, n = 341, evaluamos 2340 (mod 341) y obtenemos que 2340 ≡ 1 (mod 341). Esto no nos permite deducir que 341 sea compuesto, pero tampoco que sea primo. Al probar con a=3 tenemos 3340 ≡ 56 (mod 341), lo cual implica que 341 es compuesto. A los números que se comportan como el 341 en el ejemplo anterior se les llama pseudoprimos para la base 2 (se comportan como un primo para a=2). Este comportamiento es bastante más peculiar peculiar para algunos números. Tomando por ejemplo a=2 y n=561, obtenemos que 2560 ≡ 1 (mod 561), 3560 ≡ 1 (mod 561), 5560 ≡ 1 (mod 561) y así con todas las bases con las que probemos. Es decir, se comporta como un primo para cualquier base que elijamos. Sin embargo, 561 es compuesto (561 = 3·11·17). A los números que como éste, son pseudoprimos para todas las bases se les llama números de Carmichael. Los números de Carmichael menores que 100.000 son 561, 1105, 1729, 2465, 2821, 6601, 8911, 10585, 15841, 29341, 41041, 46657, 52633, 62745, 63973 y 75361. Desde luego, no parecen muy abundantes. Los expertos se preguntaban en los años 80 si serían un conjunto finito, con lo cual una vez identificados se podrían "evitar" fácilmente, aunque la creencia generalizada apuntaba a que el conjunto era infinito. Se demostró que si un número es de Carmichael debe ser libre de cuadrados y producto de al menos tres primos distintos. En 1994, Alford, Granville y Pomerance demostraron que existen infinitos números de Carmichael. De hecho, su resultado indica que para n suficientemente grande C(n) > n2/7 , donde C(n) es la cantidad de números de Carmichael menores que n. Para evitar este contratiempo, podemos recurrir a un teorema un poco más fino debido a Euler. Este resultado afirma que si n es primo y mcd (a,n)=1, entonces
  • 5. a(n-1)/2 ≡ ±1 (mod n). Con esto evitamos que algunos números compuestos puedan pasar por primos como ocurre utilizando el teorema pequeño de Fermat. Ejemplo: Para comprobar que 91 es compuesto basta ver 245 ≡ 57 (mod 91). ¿Y que pasa con un número de Carmichael como el 561?. Veamos 2280 ≡ 1(mod 561), pero 5280 ≡ 67 (mod 561). Parece que esto funciona. Pero todavía podemos afinar un poco más. La idea es que si n es primo, entonces Zn es un cuerpo. Y en un cuerpo las únicas raíces cuadradas de 1 son 1 y -1. En el último ejemplo estamos diciendo que Z561 no es un cuerpo porque en él, la raíz de 1 es 67, y por tanto 561 no es primo. Si tomamos n-1 y lo dividimos entre 2 de forma sucesiva, mientras sea posible, estamos extrayendo raíces cuadradas y se trata de comprobar si los resultados dan siempre 1 ó -1. Esto da lugar al test de Miller-Rabin. Ejemplo: Tomando n = 561 hacemos 2280 (mod 561) ≡ 1 , 2140 (mod 561) ≡ 67, que continuaría con 270 y 235 , pero ya no es necesario calcularlos porque tenemos que la raíz cuadrada de 1 es 67 (mod 561). Por tanto, 561 es compuesto. Si al llegar a 235 no obtenemos un resultado distinto de +1 ó -1, tendríamos que elegir otra base. Y ahí es donde podemos tener dificultades, porque si n es bastante grande quizá tengamos que probar con muchas bases y la respuesta tardará en llegar. Y podemos empezar a preguntarnos si la tardanza se debe a que n es primo o porque es un compuesto que se comporta como un primo para un conjunto "grande" de bases. ¿Qué debemos hacer entonces? La solución es determinar el número de bases con las que tenemos que probar para asegurar que un número compuesto no pase la prueba como si fuese primo. Definiciones: Si un entero n compuesto e impar verifica la congruencia de Euler para la base b, entonces n es un pseudoprimo de Euler para la base b. Asímismo, si n pasa el test de Miller-Rabin para la base b, entonces n es un pseudoprimo fuerte para la base b. Los siguientes resultados nos dan la respuesta a la cuestión del párrafo anterior. Proposición: Si n es compuesto e impar, al menos la mitad de las bases b que verifican 0<b<n, no satisfacen la congruencia de Euler. Teorema (Rabin): Si n es un entero compuesto impar, entonces n es un pseudoprimo fuerte para la base b, para a lo sumo un 25% de las posibles bases que verifican 0 < b < n, mcd(b,n) = 1.
  • 6. Desde luego que el teorema anterior no es para tirar cohetes. Probar con un 25% de las bases es algo descomunal si n es un número grande. Sin embargo, también hay que decir, que experimentalmente se ha comprobado que el test es mucho más eficiente de lo que indica la acotación del 25%. Es decir, cuando el número es compuesto, basta probar con unas pocas bases (la mayoría de veces con una sola) para demostrar que el número es compuesto. Si probamos con varias bases y nuestro número pasa el test, la probabilidad de que sea primo es muy pequeña. Y se puede elegir el número de bases que queramos de manera que la probabilidad sea menor que una cota prefijada de antemano. Yendo un poco más lejos, hay un resultado de Miller basado en la hipótesis generalizada de Riemann, que afirma lo siguiente: Teorema (Miller, 1976): Si la hipótesis generalizada de Riemann es cierta y n es un entero compuesto impar, entonces n no pasa el test de Miller-Rabin para alguna base b < 2·log2 n (¿¿teorema de bach, aukemy, montgomery 1985??) Este resultado implicaría un test de primalidad en tiempo polinómico del orden de O(log5 n). En la tabla de abajo podemos ver la cantidad de números de Carmichael y pseudoprimos para la base 2. Por ejemplo, el primer 1 de la fila que comienza con 103 indica que sólo hay un número de Carmichael menor que 1000, y el 3 que sigue que hay 3 pseudoprimos para la base 2 menores que 1000. ( Nota: Los pseudoprimos de Euler también son llamados a veces pseudoprimos de Euler-Jacobi ) 10n Carmichael psprimos(2) pspEuler(2) pspFuerte(2) 101 0 0 0 0 102 0 0 0 0 103 1 3 1 0 104 7 22 12 5 105 16 78 36 16 106 43 245 114 46 107 105 750 375 162 108 255 2057 1071 488 109 646 5597 2939 1282 1010 1547 14884 7706 3291 1011 3605 38975 20417 8607 1012 8241 101629 53332 22407
  • 7. 1013 19279 264239 124882 58892 Tabla 2: Pseudoprimos y números de Carmichael Los primeros pseudoprimos para la base 2 son 341, 561, 645, 1105, 1387, 1729, 1905, 2047, 2465, 2701, ... Los primeros pseudoprimos para la base 3 son 91, 121, 286, 671, 703, 949, 1105, 1541, 1729, 1891, 2821,... Los primeros pseudoprimos para la base 5 son 4, 124, 217, 561, 781, 1541, 1729, 1891, ... Los primeros pseudoprimos de Euler para la base 2 son 561, 1105, 1729, 1905, 2047, 2465, ... Los primeros pseudoprimos de Euler para la base 3 son 121, 703, 1729, 1891, 2821, 3281, 7381, ... Los primeros pseudoprimos fuertes para la base 2 son 2047, 3277, 4033, 4681, 8321, 15841, 29341, 42799, 49141, 52633, 65281, 74665, 80581, 85489, 88357, 90751, ... Los primeros pseudoprimos fuertes para la base 3 son 121, 703, 1891, 3281, 8401, 8911, 10585, 12403, 16531, 18721, 19345, 23521, 31621, 44287, 47197, 55969, 63139, 74593, 79003, 82513, 87913, 88573, 97567, ... Estos ejemplos nos permiten ver que si en lugar de la base 2 utilizamos las bases 2 y 3, los números que pueden pasar el test siendo compuestos son muchos menos. Y si tomamos más bases todavía, los resultados mejoran considerablemente. Por ejemplo, sólo hay un pseudoprimo fuerte para las bases 2, 3, 5 y 7 menor que 25·109 , y este número es 3,215,031,751. La sucesión de los números impares más pequeños que pasan el test de Miller- Rabin usando los primeros k números primos para k = 1, 2, 3,... está dada por 2047, 1373653, 25326001, 3215031751, 2152302898747, 3474749660383, 341550071728321, 341550071728321, ... (Sloane A014233; Jaeschke 1993). Por lo tanto, el test es totalmente determinista si usamos los siete primeros números primos (con 8 no da ninguna mejora) para números menores menores de 3,4·10^14. Lo que se hace en la práctica para números muy grandes es tomar una serie de bases al azar y comprobar si se verifican las congruencias. Si no se verifica en
  • 8. algún caso, el número es compuesto con total seguridad. Si se verifican todas, hay una "sospecha" muy grande de que el número es primo, aunque no puede asegurarse. La probabilidad de error puede hacerse tan pequeña como se quiera con solo coger un número suficiente de bases. Gracias a los trabajos de Pomerance, Selfridge y Wagstaff (1980) y Jaeschke (1993) podemos elaborar tests de rápida ejecución y completamente deterministas (usando Miller-Rabin) si consideramos números hasta un cierto tamaño: Para números menores que 25,326,001 basta probar con las bases 2, 3 y 5. Para números menores que 4,759,123,141 basta probar con las bases 2, 7 y 61. Para números menores que 2,152,302,898,747 basta probar con las bases 2, 3, 5, 7 y 11. Para números menores que 341,550,071,728,321 basta probar con las bases 2, 3, 5, 7, 11, 13 y 17. En 1980, Adleman publica un artículo titulado "On distinguishing prime numbers from composite numbers". Sus resultados son mejorados por Pomerance, Rumely, Cohen, H.W. Lenstra y A.K. Lenstra. Esta trabajo conjunto junto con el teorema que viene a continuación dan lugar a un test de primalidad conocido como APR (hay más de una versión de este test) Teorema (Odlyzko-Pomerance, 1982): Existe una constante c>0 efectivamente computable tal que para todo n > ee existe un entero positivo t que satisface: i) t es libre de cuadrados. ii) 0 < t < (log n)c·log(log(log n)) y tal que s(t) > √ n , donde s(t) = Π { q ∈ Z+ / q primo y q-1 divisor de t }
  • 9. MARCO TEÓRICO Cómo averiguar si un número es primo.Un número primo es un número entero mayor que cero, que tiene exactamente dos divisores positivos. También podemos definirlo como aquel número entero positivo que no puede expresarse como producto de dos números enteros positivos más pequeños que él, o bien, como producto de dos enteros positivos de más de una forma. NUMEROS PRIMOS Ejemplos: a) El 7 es primo. Sus únicos divisores son 1 y 7. Sólo puede expresarse como producto de 7·1. Gracias a los trabajos de Pomerance, Selfridge y Wagstaff (1980) y Jaeschke (1993) podemos elaborar tests de rápida ejecución y completamente deterministas (usando Miller-Rabin) si consideramos números hasta un cierto tamaño: Para números menores que 25,326,001 basta probar con las bases 2, 3 y 5. Para números menores que 4,759,123,141 basta probar con las bases 2, 7 y 61. Ejemplo: Para probar que 227 es primo sabiendo que √227 = 15'0665... basta con ver que no es divisible entre 2, 3, 5, 7, 11 y 13. El algoritmo más sencillo que puede utilizarse para saber si un número n es primo es el de la división. Se trata de ir probando para ver si tiene algún divisor propio. Para ello vamos dividiendo el número n entre 2, 3, 4, 5, ... , n-1. Si alguna de las divisiones es exacta (da resto cero) podemos asegurar que el número n es compuesto.