E.T.S. de
Ingenier´ıa Inform´atica
Introducci´on a la Matem´atica Discreta
Ingenier´ıa Inform´atica Primera pr´actica
Objetivos
El objetivo de esta pr´actica es observar la r´apida convergencia del algoritmo de Euclides (Alejandr´ıa 300 a.C.) para hallar el m´aximo com´un divisor de dos n´umeros enteros a y b, basado en que si
a = bq + r con 0 ≤ r < b =⇒ mcd (a, b) = mcd (b, r).
Una variante de este m´etodo es la siguiente:
a = bq + r con − |b|/2 ≤ r < |b|/2 =⇒ mcd (a, b) = mcd (b, r) El algoritmo resultante recibe el nombre de algoritmo del m´ınimo resto.
Actividades
1.- Los programas escritos para MATLAB (que guardaremos con los nombres de eu- clides.m y minres.m) calculan el m´aximo com´un divisor d de dos n´umeros a y b, previamente introducidos, mediante los algoritmos de Euclides y del M´ınimo Resto respectivamente. Tambi´en nos indica el n´umero n de pasos necesarios para obtenerlo.
Calcular mcd (2860, 1240) utilizando ambos algoritmos y comparar el n´umero de pasos necesarios con cada uno de ellos.
2.- Se considera la funci´on de Fibonacci definida de forma recursiva por:
fib (1) = fib (2) = 1, fib (n) = fib (n − 1) + fib (n − 2) para n ≥ 3.
Calcular fib (42) y fib (41).
3.- Aplicar el algoritmo de Euclides a los enteros a = fib (42) y b = fib (41) y comparar el n´umero de pasos necesarios con los que requiere el algoritmo del m´ınimo resto.
4.- Justif´ıquese que el algoritmo de Euclides necesita siempre un mayor n´umero de pasos (o en todo caso igual) que el del m´ınimo resto.
5.- Encontrar dos n´umeros enteros, cuyo m´aximo com´un divisor sea 84, y para los que ambos algoritmos necesiten exactamente 4 pasos.
Euclides 1 r=1;
2 n=0;
3 c=a;
4 d=b;
5 while r>0
6 n=n+1;
7 q=floor(c/d);
8 r=c-q*d;
9 c=d;
10 d=r;
11 end 12 n 13 d=c
M´ınimo resto 1 r=1;
2 n=0;
3 c=a;
4 d=b;
5 while r>0
6 n=n+1;
7 q=floor(c/d);
8 r=c-q*d;
9 if r>d/2 10 r=d-r;
11 end
12 c=d;
13 d=r;
14 end 15 n 16 d=c
Sucesi´on de Fibonacci (Lenta) 1 a=1;
2 b=1;
3 n=2;
4 n=input(’¿Que termino quiere hallar? ’);
5 while n<k
6 n=n+1;
7 c=a+b;
8 a=b;
9 b=c;
10 end
11 termino_buscado=b 12 termino_anterior=a 13 a=termino_buscado;
14 b=termino_anterior;
Sucesi´on de Fibonacci 1 n=input(’¿Que termino quiere hallar? ’);
2 termino_pedido=round(((1+sqrt(5))/2)^n/sqrt(5))
3 termino_anterior=round(((1+sqrt(5))/2)^(n-1)/sqrt(5)) 4 a=termino_pedido;
5 b=termino_anterior;
E.T.S. de
Ingenier´ıa Inform´atica
Introducci´on a la Matem´atica Discreta
Ingenier´ıa Inform´atica Primera pr´actica
Apellidos . . . . Nombre . . . . Grupo . . . Subgrupo de Pr´acticas . . . .
1.- Rellenar los datos obtenidos al aplicar ambos algoritmos.
mcd (2860, 1240) = ... No de pasos
Alg. de Euclides: ...
Alg. del m´ınimo resto: ...
2.- Escribir los valores obtenidos para
fib (41) = ... y fib (42) = ...
3.- Rellenar los datos obtenidos al aplicar ambos algoritmos.
mcd (fib (42), fib (41)) = ... No de pasos
Alg. de Euclides: ...
Alg. del m´ınimo resto: ...
4.- Justificar que el algoritmo de Euclides requiere siempre un mayor (en todo caso igual) n´umero de pasos que el algoritmo del m´ınimo resto.
5.- Dos enteros, cuyo m´aximo com´un divisor es 84, y para los que se requieren, exacta- mente, 4 pasos con ambos algoritmos son:
a = ... y b = ...
E.T.S. de
Ingenier´ıa Inform´atica Segunda pr´actica
Introducci´on:
La presente pr´actica se realizar´a con MAPLE ya que la aritm´etica que utiliza MATLAB no permite trabajar con grandes n´umeros.
Los comandos que podemos necesitar son los siguientes:
a mod b . . . a mod b;.
ab mod c . . . a &^b mod c;.
Primer n´umero primo posterior a n . . . nextprime(n);.
Lista de los 50 primeros n´umeros primos
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 101 103 107 109 113
127 131 137 139 149 151 157 163 167 173
179 181 191 193 197 199 211 223 227 229.
Objetivos:
1.- Conocer las dificultades que presentan los test de primalidad.
2.- Familiarizar al alumno con los grandes n´umeros.
Actividades:
1.- Calcular el n´umero de Mersenne M23 y determinar si es primo o compuesto viendo si tiene alg´un divisor propio. (Probar si es divisible por alguno de los primos conocidos).
2.- Aplicarle alguno de los test de primalidad estudiados.
3.- Aplicar el test de base 2 al n´umero 341. Si lo supera aplicarle el de base 3 y as´ı sucesivamente para estudiar si es primo.
4.- Repetir el proceso del apartado anterior con 561. ¿Podemos asegurar que es primo?
5.- Repetir el proceso del apartado 3 con al n´umero 314821.
6.- ¿Puede aplicarse el test de Wilson a 314821?
7.- Elegir, al azar, tres primos de cinco d´ıgitos, multiplicarlos y aplicarle, al resultado, los test de pseudoprimalidad para detectar si es compuesto. ¿Qu´e ha ocurrido con los n´umeros elegidos por el resto de los compa˜neros? ¿Qu´e conclusiones se deducen?
E.T.S. de
Ingenier´ıa Inform´atica
Introducci´on a la Matem´atica Discreta
Ingenier´ıa Inform´atica Segunda pr´actica
Apellidos . . . . Nombre . . . . Grupo . . . Subgrupo de Pr´acticas . . . .
1.- M23 = ...
Si no es primo, escriba uno de sus divisores propios (un divisor distinto de 1 y de M23).
2.- Justif´ıquese el resultado obtenido.
3.- ¿Es primo 341? SI ... NO ...
En caso negativo, ¿con que base falla el test de pseudoprimalidad? a = ...
4.- Escribir las bases con que se ha probado y ha superado el test.
a = ... a = ... a = ... a = ... a = ...
¿Se puede asegurar que es primo? SI ... NO...
Justificar la respuesta.
5.- Escribir las bases con que se ha probado y ha superado el test.
a = ... a = ... a = ... a = ... a = ...
¿Se puede asegurar que es primo? SI ... NO ...
Justificar la respuesta.
6.- Especifique los motivos por los que no puede aplicarse ahora el test de Wilson.
7.- Los primos elegidos han sido
p1 = ... p2 = ... p3 = ... por lo que n = p1×p2×p3 = ...
¿Han detectado los test si el n´umero es compuesto? SI ... NO...
En caso afirmativo, ¿con qu´e base? a = ...
¿Qu´e resultado han obtenido el resto de compa˜neros?
¿Qu´e conclusiones se deducen?
E.T.S. de
Ingenier´ıa Inform´atica Tercera pr´actica
Con la clave (n, e) = (117886772639145302413139759572757281286533, 577) y los 256 c´odigos ASCII se ha cifrado un texto (c´odigo a c´odigo) y ha resultado:
102582351188176687952473951851279209229630 74340069232383565976841121251958573367000 39152585111623640283133453628342856120920 51257604979569988480878038057604919107054 96981314614006854168267381289660443494292 35476473158011981994894614736000887945017 53212141896769878080350395845649429337465 16711323352764757499551918983971944917925
descifra el texto.
E.T.S. de
Ingenier´ıa Inform´atica
Introducci´on a la Matem´atica Discreta Ingenier´ıa Inform´atica
Tercera pr´actica
Apellidos . . . . Nombre . . . . Grupo . . . Subgrupo de Pr´acticas . . . .
El texto descifrado es: