Pulse aquí para volver a la página inicial

Problema 1
Hablando informalmente, una sucesión es una regla que asocia un número a cada número natural 1, 2, 3, 4, ...... , el número asociado a k se llama el "k-ésimo término" de la sucesión y se lo indica con ak. A menudo, se indica un sucesión escribiendo sus primeros términos; en tal caso, se supone que la regla para formar el "término general", es decir, el k-ésimo término para cualquier k, es clara. Por ejemplo:

(a) 2, 4, 6, 8, 10, ....

(b) 1, 3, 5, 7, 9, ....

(c) 1, 0, 1, 0, 1, ....

(d) 1, 2, 6, 24, 120, ....

(e) 1, 1, 2, 3, 5, 8, 13, ....

En nuestros ejemplos:

ak = 2.k

bk = 2.(k-1) + 1

ck = [1-(-1)k]/2

d1 = 1 y dk = k.dk-1 si k > 2

e1 = 1, e2 = 1 y ek = ek-1 + ek-2 si k > 3

Cuando, como en el caso de las dos últimas sucesiones, para conocer el valor de ak se hace necesario conocer el valor de uno o más de los términos anteriores se habla de fórmulas de "recurrencia".

La sucesión del ejemplo (d) es la que define el factorial de k (k!) y la del ejemplo (e) es la famosa sucesión de Fibonacci.

Planteamos entonces dos problemas:

(A) Escribir un programa que permita el ingreso de un número natural n y que calcule n! exhibiendo el resultado.

(B) Ídem (A) para la sucesión de Fibonacci.

Nota: Para aquéllos que usen un lenguaje que admita recursividad, les aconsejamos que hagan dos versiones de los programas pedidos en (A) y (B): usando recursividad y sin usarla. En este caso, sería interesante comparar los tiempos de "corrida" de las dos versiones.

Problema 2
Cuando consideramos dos números enteros, n y m, decimos que m divide a n, cuando existe otro entero k tal que: n = m.k

En tal caso, decimos que n es un múltiplo de m y que m es un divisor de n.

Decimos que un número p es primo si y sólo si p es distinto de 1 y de -1 y los únicos divisores de p son: 1, -1, p y -p.

Escribir un programa que, para cualquier entero positivo n, dé una lista de todos los enteros positivos primos menores o iguales que n.

Problema 3
Diseñar un programa que dado un número natural n escriba el desarrollo binario de n.

Luego, diseñar otros para el desarrollo en base 3, 4 y 5.

Problema 4
Dados dos enteros, m y n, un número entero d es el máximo común divisor (o el mayor divisor común) si y sólo si:

- d divide a m y d divide a n.

- si k divide a m y k divide a n entonces k < d.

Euclides, muchos siglos atrás, pensó un algoritmo para hallar el m.c.d. entre dos números enteros, basándose en una simple observación:

- si d es el m.c.d. entre m y n entonces d es el m.c.d. entre (m-n) y n

Es necesario que se tome Ud. un momento para pensar por qué esta observación es cierta. Así, si se trata de encontrar el m.c.d. entre 461952 y 116298, mediante restas sucesivas se puede ir "achicando" los números, quedando la secuencia siguiente:

461952, 116298, 113058, 3240, 2898, 342, 162, 18

(Cada uno de los términos es el resto de dividir entre sí los dos anteriores)

Escribir un programa, que dados dos números enteros m y n, halle el m.c.d. entre m y n. Puede tratar de hacer dos versiones: usando la divisan entera y sin usarla. (Cuál de los dos tarda más?).

Problema 5
Dados dos enteros, m y n, un número entero d es el mínimo común múltiplo, (o el menor múltiplo común) si y sólo si:

- r > 0, r es múltiplo de m y r es múltiplo de n.

- Dado k > 0, si k es múltiplo de m y k es múltiplo de n entonces r < k

Estudiar primero, con lápiz y papel, qué relación hay entre el m.c.d., el producto de los números dados y el m.c.m.. Luego, escribir un programa, que dados dos números enteros m y n, halle el m.c.m. de m y n.

Problema 7
Dos números enteros se dicen coprimos si y sólo si el m.c.d. entre ellos es 1. Por ejemplo:

m.c.d.(17,91) = 1 luego 17 y 91 son coprimos.

Encontrar, lápiz en mano, cuál es el mayor par de enteros positivos coprimos que pueden ser considerados en el lenguaje y la computadora que Ud. utiliza.

Escribir un programa que, dado un entero n, determine una matriz nxn de manera que:

aij = 1 si i y j son coprimos

aij = 0 si i y j no son coprimos

Problema 8
Escribir un programa que admita como entrada un entero n positivo y luego n fracciones y que permita resolver los problemas siguientes exhibiendo los correspondientes resultados:

A- Ordenar de mayor a menor las fracciones ingresadas.

B- Calcular la suma de las n fracciones, expresándola como una fracción irreducible.

Problema 9
Escribir un programa que permita ingresar un texto y luego lo reescriba eliminando los comentarios, entendiendo por comentario todo aquel texto que aparece entre paréntesis.

Así al ingresar el siguiente texto:

Juan (mi mejor amigo) regresa a la Argentina el día 20.

se debe reescribir:

Juan regresa a la Argentina el día 20.

Debe tenerse en cuenta que los comentarios pueden estar "anidados", como por ejemplo en el siguiente texto:

Carlos (el hermano de Juan (mi mejor amigo) que regresa a la Argentina el día 20) irá a esperarlo al aeropuerto.

En este caso, el programa debe producir la siguiente "salida":

Carlos irá a esperarlo al aeropuerto.

Problema 10
Consideremos una "espiral cuadrada" que parte del origen de coordenadas y toca consecutivamente los puntos (1,0), (1,1), (0,1), (-1,1), (-1,0), (-1,-1), (0,-1), (1,-1), (2,-1), etc.. De esta manera todos los puntos de coordenadas enteras pertenecen a la espiral. Partiendo del punto inicial (0,0), dichos puntos son numerados en forma consecutiva con los enteros no negativos 0, 1, 2, 3, 4, ... etc..

Diseñar un programa que solucione los siguientes problemas:

A- Determinar las coordenadas de un punto de la espiral considerada, numerado por "n", donde "n" es un entero no negativo dado. B- Determinar el entero no negativo "n", correspondiente a un punto de coordenadas enteras (x,y).

C- Encontrar el mayor entero no negativo "n", correspondiente al punto de la espiral, situado dentro de un círculo de centro (a,b) y radio r, donde a, b y r son enteros y r es positivo.