1 Siracusa Emiliano Martín Trabajo Práctico N°3 ALGORITMOS - PARTE II Ejercicio 1 Escribir algoritmos para cada uno de los siguientes incisos. Es recomendable utilizar como primitivas los algoritmos realizados en el práctico anterior. a) Sumar los números primos menores a un número natural n dado. Ej. si n =18, el algoritmo deberá sumar 2+3+5+7+11+13+17. b) Dado un número natural primo p, escribir un algoritmo que calcule el primo ps inmediato siguiente. Ej.: si p = 5 entonces ps deberá ser 7. Si p = 13 entonces ps deberá ser 17. c) Dados dos números a y b, determinar si la suma de los divisores de a es igual a b. d) Dados dos números a y b, y un dígito d, decidir si d está presente tanto en a como en b. e) Dados dos números a y b, devolver si la suma de los dígitos de a es igual a la suma de los dígitos de b. Ejercicio 2 Escribir un algoritmo que indique si un número natural n puede expresarse como la suma de dos números primos. Ejercicio 3 Elaborar un algoritmo que decida si un número natural n es o no capicúa. Un número n formado por dígitos "d1 d2 d3 ... dk" es capicúa si el numero "dk dk-1 ... d2 d1" es igual a n. Por ejemplo, 1, 7, 212 y 5005 son capicúas. Ejercicio 4 Dos números se dicen amigos si la suma de los divisores de cada uno de ellos (incluida la unidad, y exceptuando el número mismo) es igual al otro número dado. Ej: 220 y 284 son números amigos. Escribir un algoritmo para determinar si dos números enteros x e y son amigos. Ejercicio 5 Un número natural a es espejo de otro número natural b, si los dígitos que forman a listadas en orden inverso forman el número b. Ej: 123 es espejo de 321; 334667 es espejo de 766433; 345 no es espejo de 541. Escribir un algoritmo que, dados dos números naturales a y b, indique si a es espejo de b. Ejercicio 6 Un número natural n se dice perfecto si la suma de todos sus divisores positivos (incluyendo la unidad) es igual a n. Ej: 28 = 1+2+4+7+14 es un número perfecto; otros números perfectos son el 6 y el 496. El número 12 ^ 1+2+3+4+6, luego 12 no es perfecto. Confeccionar un algoritmo para determinar si un número natural n es perfecto. Ejercicio 7 Escribir un algoritmo que, dados dos números enteros a y b tal que a < b, indique si todos los números comprendidos entre a y b pueden expresarse como la suma de dos números primos. Por ejemplo, si a=5 y b=8 el algoritmo debe responder verdadero, dado que 5=2+3, 6=3+3, 7=2+5 y 8=3+5. Ejercicio 8 Una fecha puede representarse mediante tres números naturales Día, Mes y Año, correspondientes a número de día, número de mes y número de año, respectivamente. Escribir algoritmos para: 1. Dadas dos fechas di, mi, al y d2, m2, a2, determinar si las fechas son iguales. 2. Dada una fecha d, m, a, determinar cuál será el día siguiente. Por ejemplo, si la fecha es 31/12/1993 el día siguiente será 1/1/1994. 2 3. Dadas dos fechas di, mi, al y d2, m2, a2, calcular la cantidad de días comprendidos entre ambas. Observación: es posible utilizar el algoritmo que, dada una fecha, devuelve como resultado el día siguiente a la misma. Ejercicio 9 Desarrollar un algoritmo que indique si dos números naturales n y m están formados por los mismos dígitos. Por ejemplo, 321 y 213; 599 y 995; 45 y 554 están formados por los mismos dígitos. Ejercicio 10 Escribir un algoritmo que, dado un número natural n, devuelva un nuevo número natural m, tal que m esté formado por los dígitos de n ordenados de menor a mayor. Ejercicio 11 Confeccionar un algoritmo que, dado un número natural n, devuelva el menor número natural m que puede formarse usando todos sus dígitos impares seguidos de todos sus dígitos pares. Por ejemplo: para n=96592, este algoritmo debe devolver m=59926. Ejercicio 12 Escribir algoritmos para calcular la suma de los n primeros términos de las siguientes sumatorias: a) 1 + 3 + 5 + 7 + ... + (2k +1) b) 1 - 3 + 5 - 7 + ... + (-1)k(2k + 1) c) 2*13/ 1! - 2*23/2! + 2*33/3! - 2*43/ 4! + ... + (-1)n+1 * 2 * n3/ n! Ejercicio 13 La sucesión de Fibbonacci comienza con los números 1 y 1. Luego, cada uno de los términos se calcula como la suma de los dos anteriores. Los primeros elementos de la sucesión de Fibbonacci son: 1, 1, 2, 3, 5, 8, 13, 21, 34, . . . a) Escribir un algoritmo que, dado un número natural n, devuelva el n-ésimo término de la sucesión de Fibbonacci. Ej: para n=7, debe devolverse 13. b) Elaborar un algoritmo que, dados dos números naturales cualesquiera n y m, determine si los mismos son miembros consecutivos de la sucesión de Fibbonacci. Ej: para n=5 y m=8, la respuesta es verdadero; para n=5 y m=21, la respuesta es falso. Ejercicio 14 Dos números x e y se dicen primos mellizos si tanto x como y son primos, y difieren entre sí en dos unidades. Por ejemplo, los números 3 y 5 son primos mellizos. Confeccionar un algoritmo para contar la cantidad de pares de primos mellizos formados por números menores o iguales a un natural m (dato de entrada de este algoritmo). Ej: para m=15 hay tres pares de primos mellizos, que son los siguientes: (3,5); (5,7) y (11,13). Ejercicio 15 Escribir un algoritmo que genere y cuente todos los números naturales de 3 cifras en los cuales el dígito más significativo y menos significativo son impares y el dígito restante es par. Ej.: 123, 161, etc. Ejercicio 16 Desarrollar un algoritmo que genere y cuente todos los números naturales de 4 dígitos tal que la suma del dígito perteneciente a la unidad y el dígito perteneciente a la centena sea mayor que la suma de los restantes dígitos. Por ejemplo, 1237 y 7989 son números que deberían contarse pero 5321 y 9821 no. Ejercicio 17 Enunciar un algoritmo que dados dos números naturales n y m, diga si m está "contenido" en n. Un número m está contenido en otro n si la secuencia de los dígitos de m aparece consecutivamente dentro de la secuencia de los dígitos de n. Por ejemplo, 12 está contenido en 2123, 12 no está contenido en 2132 , 103 está contenido en 93103, 31 está contenido en 93103. Importante: el algoritmo debe funcionar correctamente para casos del estilo: N=9872387, M=987. 1/9