Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Ejercicios Matemáticos

Universidad Nacional de Río Negro

Acerca de

Estos ejercicios están centrados en algoritmos de teoría de números y operaciones matemáticas en C. Te permitirán comprender cómo se implementan los cálculos matemáticos de forma iterativa y condicional, y cómo manejar las limitaciones de precisión de las variables.

Capítulos de Apunte Correspondientes

Cuestiones de Estilo Aplicables


Aritmética Lenta

Ejercicio 3.1 - Suma lenta ⭐⭐☆☆☆

Descripción

Implementar una función que simule la adición de dos números enteros, n y m, utilizando únicamente 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.

Ejercicio 3.2 - División lenta ⭐⭐☆☆☆

Descripción

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

Ejercicio 3.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.


Divisibilidad y Factores

Ejercicio 3.4 - Divisibilidad ⭐⭐☆☆☆

Descripción

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

Ejercicio 3.5 - Factorial ⭐⭐☆☆☆

Descripción

Calcular el factorial de un número entero no negativo n, denotado como n!. El factorial es el producto de todos los enteros positivos desde 1 hasta n.

Ejercicio 3.6 - 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.


Propiedades de los Números

Ejercicio 3.7 - Suma de dígitos ⭐⭐☆☆☆

Descripción

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

Ejercicio 3.8 - Invertir un número ⭐⭐☆☆☆

Descripción

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

Ejercicio 3.9 - 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.

Ejercicio 3.10 - Números Primos ⭐⭐☆☆☆

Descripción

Verificar si un número entero mayor que 1 es un número primo. Un número es primo si solo es divisible por 1 y por sí mismo.

Ejercicio 3.11 - 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).

Ejercicio 3.12 - 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.

Ejercicio 3.13 - 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.

Ejercicio 3.14 - 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.

Ejercicio 3.15 - 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.

Ejercicio 3.16 - 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.


Algoritmos Numéricos Avanzados

Ejercicio 3.17 - 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.

Ejercicio 3.18 - 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.

Ejercicio 3.19 - 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.

Ejercicio 3.20 - 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.

Ejercicio 3.21 - 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.

Ejercicio 3.22 - 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.

Ejercicio 3.23 - 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.

Ejercicio 3.24 - 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.

Ejercicio 3.25 - 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).

Ejercicio 3.26 - 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.

Ejercicio 3.27 - 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.

Ejercicio 3.28 - 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).

Ejercicio 3.29 - 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.

Ejercicio 3.30 - 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.

Ejercicio 3.31 - 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”).


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

Ejercicio 3.32 - 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.

Ejercicio 3.33 - 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.

Ejercicio 3.34 - 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).

Ejercicio 3.35 - 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.

Ejercicio 3.36 - 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, ...

Ejercicio 3.37 - 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).

Ejercicio 3.38 - Ternas Pitagóricas ⭐⭐☆☆☆

Descripción

Implementar un programa que genere todas las ternas pitagóricas primitivas (`a^2

Ejercicio 3.39 - Números de Carmichael ⭐⭐☆☆☆

Descripción

Un número de Carmichael es un número 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.

Ejercicio 3.40 - 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.

Ejercicio 3.41 - 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.