Skip to article frontmatterSkip to article content

Ejercicios Matemáticos

Ejercicios centrados en algoritmos de teoría de números y operaciones matemáticas.


1: Aritmética Lenta

1.1: Suma lenta

Descripción

Implementar una función que simule la adición de dos números enteros, n y m, utilizando ñicamente las operaciones más básicas de la unidad aritmético-lógica: sumar o restar 1. Este ejercicio ayuda a comprender la suma como una serie de incrementos o decrementos sucesivos.

Lógica y Consideraciones

1.2: División lenta

Descripción

Implementar la división entera para obtener el cociente y el resto de a / b utilizando ñicamente restas sucesivas. Este método emula cómo se podría realizar una división de forma manual o en hardware muy simple.

Lógica y Consideraciones

1.3: División egipcia

Descripción

Implementar el antiguo método de división egipcio, que no requiere tablas de multiplicar ni operaciones de división directa. Se basa en duplicar el divisor, encontrar qué duplicaciones suman el dividendo y sumar los factores de duplicación correspondientes.

Lógica y Consideraciones


2: Divisibilidad y Factores

2.1: Divisibilidad

Descripción

Determinar si un número entero a es divisible de forma exacta por otro entero b.

Lógica y Consideraciones

2.3: MCD y MCM

Descripción

Implementar funciones para calcular el Máximo Comón Divisor (MCD) y el Mínimo Comón Móltiplo (MCM) de dos números enteros.

Lógica y Consideraciones


3: Propiedades de los Números

3.1: Suma de dígitos

Descripción

Calcular la suma de los dígitos individuales de un número entero positivo.

Lógica y Consideraciones

3.2: Invertir un número

Descripción

Tomar un número entero y devolver otro número con sus dígitos en orden inverso.

Lógica y Consideraciones

3.3: Capicúas

Descripción

Verificar si un número es capicúa (o palíndromo), es decir, si se lee igual de izquierda a derecha que de derecha a izquierda.

Lógica y Consideraciones

3.5: Números Perfectos

Descripción

Determinar si un número es un “número perfecto”. Un número perfecto es un entero positivo que es igual a la suma de sus divisores propios positivos (todos sus divisores excepto él mismo).

Lógica y Consideraciones

3.6: Números Amigos

Descripción

Verificar si dos números enteros positivos, a y b, son “números amigos”. Dos números son amigos si la suma de los divisores propios de a es igual a b, y viceversa.

Lógica y Consideraciones

3.7: Números Abundantes

Descripción

Determinar si un número es “abundante”. Un número es abundante si la suma de sus divisores propios es mayor que el propio número.

Lógica y Consideraciones

3.8: Conjetura de Collatz

Descripción

Implementar la secuencia de Collatz para un número inicial n. La secuencia se genera aplicando repetidamente una regla: si el número actual es par, se divide por 2; si es impar, se multiplica por 3 y se le suma 1. La conjetura (no probada) es que esta secuencia siempre llega a 1.

Lógica y Consideraciones

3.9: Números de Armstrong

Descripción

Verificar si un número es un número de Armstrong (o narcisista). Un número de k dígitos es de Armstrong si es igual a la suma de sus propios dígitos elevados a la potencia k.

Lógica y Consideraciones

3.10: Números Felices

Descripción

Determinar si un número es un “número feliz”. El proceso consiste en reemplazar el número por la suma de los cuadrados de sus dígitos repetidamente. Si el proceso llega a 1, el número es feliz. Si entra en un ciclo que no incluye el 1 (notablemente el ciclo 4 → 16 → 37 → 58 → 89 → 145 → 42 → 20 → 4), no es feliz.

Lógica y Consideraciones


4: Algoritmos Numéricos Avanzados

4.1: Criba de Eratóstenes

Descripción

Implementar la Criba de Eratóstenes, un algoritmo altamente eficiente para encontrar todos los números primos hasta un límite superior N especificado.

Lógica y Consideraciones

4.2: Descomposición en Factores Primos

Descripción

Dado un número entero, encontrar y mostrar su descomposición en factores primos. Por ejemplo, para 360, la salida sería 2^3 * 3^2 * 5.

Lógica y Consideraciones

4.3: Números de Catalan

Descripción

Implementar una función que calcule el n- ésimo número de Catalan, CnC_n. Estos números forman una secuencia de números naturales que aparece en varios problemas de conteo en combinatoria.

Lógica y Consideraciones

4.4: Coeficiente Binomial

Descripción

Calcular el coeficiente binomial “n en k”, denotado como C(n,k)C(n, k) o (nk)\binom{n}{k}, que representa el número de formas de elegir k elementos de un conjunto de n elementos sin importar el orden.

Lógica y Consideraciones

4.5: Raíz Cuadrada Entera (Método Babilónico)

Descripción

Implementar un algoritmo para calcular la parte entera de la raíz cuadrada de un número n utilizando el método babilónico (o de Herón), que es un método iterativo eficiente.

Lógica y Consideraciones

4.6: Números Triangulares

Descripción

Un número triangular es la suma de los n primeros números naturales. Por ejemplo, el 4ó número triangular es 1+2+3+4=10. El objetivo es escribir una función que determine si un número entero dado es un número triangular.

Lógica y Consideraciones

4.7: Conjetura de Goldbach

Descripción

La conjetura de Goldbach (aùn no probada) establece que todo número par mayor que 2 puede expresarse como la suma de dos números primos. Escribir un programa que, dado un número par, encuentre un par de números primos que lo sumen.

Lógica y Consideraciones

4.8: Primos Gemelos

Descripción

Dos números primos p y q son gemelos si q = p + 2. El programa debe encontrar todos los pares de primos gemelos hasta un límite N.

Lógica y Consideraciones

4.9: Identidad de Bézout

Descripción

Extender el Algoritmo de Euclides para encontrar no solo el MCD de dos enteros a y b, sino también dos enteros x e y que satisfacen la identidad de Bézout: ax+by=mcd(a,b)ax + by = mcd(a, b).

Lógica y Consideraciones

4.10: Cálculo de Pi (Serie de Leibniz)

Descripción

Aproximar el valor de π\pi utilizando la serie de Leibniz. La función debe recibir el número de términos a utilizar para la aproximación.

Lógica y Consideraciones

4.11: Números de Lucas

Descripción

Generar los primeros n términos de la secuencia de Lucas. Es una secuencia similar a la de Fibonacci, pero comienza con 2 y 1.

Lógica y Consideraciones

4.12: Números de Mersenne

Descripción

Un número de Mersenne es un número de la forma Mp=2p1M_p = 2^p - 1, donde p es un número primo. El programa debe generar números de Mersenne y verificar si son a su vez primos (primos de Mersenne).

Lógica y Consideraciones

4.13: Test de Primalidad de Miller-Rabin

Descripción

Implementar una versión simplificada del test de primalidad de Miller-Rabin. Es un test probabilístico que, a diferencia de la división por tentativa, es eficiente para números grandes.

Lógica y Consideraciones

4.14: Números Vampiro

Descripción

Un número vampiro es un número de 2k dígitos que puede ser factorizado en dos números de k dígitos (los “colmillos”), donde los dígitos de los colmillos, concatenados, son una permutación de los dígitos del número original.

Lógica y Consideraciones

4.15: Cuadrado Mágico

Descripción

Verificar si una matriz cuadrada n x n de números es un cuadrado mágico. Un cuadrado mágico es una matriz donde la suma de los números de cada fila, cada columna y ambas diagonales principales es la misma (“constante mágica”).

Lógica y Consideraciones


5: Más Teoría de Números y Algoritmos

5.1: Números de Smith

Descripción

Un número de Smith es un número compuesto cuya suma de dígitos es igual a la suma de los dígitos de sus factores primos. El programa debe verificar si un número dado es un número de Smith.

Lógica y Consideraciones

5.2: Primos de Sophie Germain

Descripción

Un número primo p es un primo de Sophie Germain si 2p + 1 también es un número primo. El programa debe encontrar todos los primos de Sophie Germain hasta un límite N.

Lógica y Consideraciones

5.3: Función φ de Euler (Totient)

Descripción

Implementar una función que calcule el Totient de Euler, φ(n). Esta función cuenta el número de enteros positivos hasta n que son coprimos con n (es decir, mcd(k, n) = 1 para 1 <= k <= n).

Lógica y Consideraciones

5.4: Radical de un Número

Descripción

Calcular el radical de un número n, denotado como rad(n), que es el producto de sus factores primos distintos.

Lógica y Consideraciones

5.5: Secuencia de Tribonacci

Descripción

Generar los primeros n términos de la secuencia de Tribonacci, donde cada término es la suma de los tres anteriores. La secuencia puede comenzar de diferentes formas, una comón es 0, 1, 1, 2, 4, 7, 13, ...

Lógica y Consideraciones

5.6: Fracciones Egipcias

Descripción

Escribir una función que descomponga una fracción propia a/b en una suma de fracciones unitarias distintas (fracciones con numerador 1).

Lógica y Consideraciones

5.7: Ternas Pitagóricas

Descripción

Implementar un programa que genere todas las ternas pitagóricas primitivas (a^2 + b^2 = c^2, con mcd(a,b,c)=1) hasta un cierto límite para c, utilizando la fórmula de Euclides.

Lógica y Consideraciones

5.8: Números de Carmichael

Descripción

Un número de Carmichael es un número compuesto n que satisface la congruencia bn11(modn)b^{n-1} \equiv 1 \pmod{n} para todos los enteros b coprimos con n. Escribir una función que verifique si un número es un número de Carmichael.

Lógica y Consideraciones

5.9: Logaritmo Entero

Descripción

Calcular el logaritmo entero en base b de un número n. Es el mayor entero k tal que bknb^k \le n. La implementación no debe usar funciones de math.h.

Lógica y Consideraciones

5.10: Conversión de Base Numérica

Descripción

Escribir una función que convierta un número n de una base b1 a una base b2.

Lógica y Consideraciones