Está en la página 1de 2

Facultad Politécnica – IEK / IEL / ICM / IAE / IEN

Algoritmo - Fecha: 6-marzo-2020


Tarea #3 (Ejercicios a entregarse vía EDUCA hasta el Viernes 13-marzo a las 23:55 hs)
Indicaciones
Ejercicios de algoritmos iterativos (Cada resolución debe hacerse en un archivo SL separado donde cada archivo debe tener el nombre de los integrantes del grupo
y el número de ejercicio que le corresponde). El conjunto de archivos debe incluirse en una sub-carpeta con los apellidos de los integrantes y número de tarea
(Ejemplo benitez_martinez_3)
Los archivos entregados deben nombrarse ej1, ej2, ej3, .. , ejn.sl y comprimirlos en un solo archivo (zip o rar). Cada archivo SL debe tener en su cabecera, como
comentario, apellido y nombre de los integrantes, año , número de ejercicio y número de tarea al que corresponde.

1) Desarrolle un programa en SL que lea una serie de números enteros mayores a cero y encuentre el mayor leido y la cantidad de veces que
ocurrie en la serie. La serie termina con un número negativo o con cero.

Suponga que la serie fue: 3, 5, 2, 5, 5, 4, 2, 3, 1, 0. Se debe imprimir el mayor = 5 y la cantidad = 3.

2) Dado un monto inicial y un interés anual (del 0.1% al 100%), imprima cuantos años debe trascurrir para duplicar el monto inicial. Imprima de la
forma que se presenta abajo.
Cantidad inicial = 100 Interés = 15%
Nro. de año Monto Al inicio del año Monto al final del año
1 100 115
2 115 132,25
3 132,25 152,0875
4 152,0875 174,9006
5 174,9006 201,1357 (aquí se duplicó!!!)
Se requiere 5 años para duplicar 100 a una tasa de 15% anual.

3) Leer un número 1 <= N <= 20 e imprimir una tabla de NxN (ver ejemplo) de forma que en la fila i / columna j ( 1 <= i, j <= N ) se imprime un “*”
si i y j son primos relativos (el máximo común divisor entre ambos es 1) o un “-” en caso contrario. Por ejemplo, si N = 4, se imprimiría:
1 2 3 4
+---+---+---+---+
1 | * | * | * | * |
+---+---+---+---+
2 | * | - | * | - |
+---+---+---+---+
3 | * | * | - | * |
+---+---+---+---+
4 | * | - | * | - |
+---+---+---+---+

4) Dado dos números enteros a y b, imprimir todos los números que pertenezcan al intervalo [a,b] y que tengan exactamente tres factores primos
cuyo producto sea igual al número analizado.
Observaciones:
• Un número es primo cuando sólo es divisible por si mismo y por la unidad. Por convención el uno(1) “no es primo”.
• Los números a y b son leídos antes del proceso.
• Los factores primos deben ser siempre mayor a uno y menor al número analizado.

Ejemplo: Dado a = 10 y b = 100


Nro. Analizado Factores
30 2 3 5
42 2 3 7
66 2 3 11
70 2 5 7
78 2 3 13
Existen 5 números que cumplen la condición.

5) Escribir un programa en SL que lea una serie de números enteros mayores a cero. Por cada número leído N imprimir el número palíndromo
mayor a N que sea el más cercano.
Un número es palíndromo si resulta en el mismo valor de izquierda a derecha o de derecha a izquierda. También es conocido como número
capicúa. Por ejemplo los números 818, 44, 212, 2002 son palíndromos.
Ejemplos
Se lee Se imprime el palíndromo mayor mas cercano.
20 22
2133 2222
450 454
0
Observaciones:
• Se lee como máximo 1000 números. Se termina de leer cuando se introduce un número no positivo ( <= 0 ).
• Para este ejercicio NO debe utilizar cadenas ni vectores (que todavía no se desarrolló en clases)

6) Considere el siguiente algoritmo para generar una secuencia de números. Comience con un entero n. Si es es par entonces se divide por 2. Si
es impar, se multiplica por 3 y se le suma 1. Repetir este proceso con el nuevo valor de n, terminando cuando el valor de n sea 1 (uno).

Por ejemplo la secuencia generada para n = 22 es :


22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1

Se conjetura (aunque no se probó aún formalmente) que este algoritmo siempre termina cuando n==1.
Para enteros <= 1.000.000 el algoritmo se cumple.

Para una número n, la Longitud del Ciclo (LC) de n es la longitud de la secuencia generada incluyendo al 1. En el ejemplo
de arriba la LC de 22 es 16.
Construya un programa en SL que lea una serie de dos variables i y j . Por cada par de valores debe determinar la máxima LC de todos los
números comprendidos entre i y j incluyendo los extremos.
La serie termina cuando se lee el valor cero para i o j.
Debe validar que i y j son siempre menores o igual a 1.000.000 y que son números enteros. Además siempre i debe ser menor o igual que j.
Ejemplos Se imprime (i, j y el máximo LC encontrado)
1, 10
1 10 20
100,200
100 200 125
201,210
201 210 89
900,1000
900 1000 174
0,0 Se termina la lectura
7) Leer una serie de números enteros positivos mayores a cero. Por cada número determine el valor de la función indicatriz de Euler, llamada
también función  de Euler. Esta es una función importante en teoría de números utilizada en el sistema de cifrado RSA. La función (n)es
definida como la cantidad de números enteros menores o igual a n que son primos relativos con n (no tienen factor común con n excepto el
número 1).

Formalmente: φ (m)=∣ { n ∈ ℕ ∣ n≤m∧mcd (m ,n )=1 } ∣ donde |.| indica cantidad que cumple la condición.

Al final debe imprimir los dos números con mayor (n). Si existen dos números con igual valor de función entonces tomar el número n mayor.

Ejemplo de cálculo de (n)

Dado el número 36: los números 1,5,7,11,13,17,19,23,25,29,31 y 35 son primos relativos y son 12 por tanto es (n)=12

Los primeros 20 números con su (n) se muestra aquí.

n 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

(n) 1 1 2 2 4 2 6 4 6 4 10 4 12 6 8 8 16 6 18 8

Observaciones:
• No puede usarse cadenas o vectores (que todavía no se desarrolló en clases).
• La secuencia termina cuando se lee el número cero o un número negativo, el cual no se procesa.
• mcd() indica mínimo común divisor.
• Validar que el número introducido sea un número entero. En caso de que sea un número real, ignorarlo y solicitar otro.

8) Leer una serie de números enteros positivos mayores a cero. Determine los dos números mayores de la serie que sean múltiplos de 37. Para
verificar la divisibilidad por 37 aplicar las siguientes reglas:

a) Si el número es menor a 1000 utilice el operador simple de módulo (%) para chequear la visibilidad.
b) Si el número es mayor o igual a 1000 debe subdividir el número en grupos contiguos de 3 dígitos tomados de derecha a izquierda. Luego,
sumar los números que forman estos grupos y verificar si es o no divisible por 37: si es menor a 1000 se aplica la regla a) y si es mayor o
igual a 1000 volver a aplicar la regla b).

Ejemplo numérico de verificación de divisibilidad por 37 utilizando este método:

Dado el número 562437481, subdividimos en grupos de tres (481,437,562), luego los sumamos, esto da 1480, el cual es mayor o igual a 1000,
por lo que volvemos a subdividir en (480,1) que sumado es: 481, al que aplicamos la regla a) (porque es menor a 1000), que es simplemente
verificar si 481 es múltiplo de 37 utilizando el operador % (481=13*37) concluyéndose que el número 562437481 es múltiplo de 37.

Ejemplo de serie:
19906, 1291238, 12839247, 628482, 3862192, 372923697, 562437481, 0
Los dos mayores son: 562437481 y 628482
Observaciones:
• La secuencia termina cuando se lee el número cero o un número negativo.
• Validar que el número introducido sea un número entero. En caso de que sea un número real, ignorarlo y solicitar otro.
• Puede que haya 0, 1, 2 o más números múltiplos de 37.
• Si no se utiliza este método para la verificar la divisibilidad invalidará la solución.

También podría gustarte