Python - Teoría de Números

#30 ejemplos de funciones sobre teoría de números en Python: #1. Verificar si un número es par: def es_par(numero): return numero % 2 == 0 #2. Verificar si un número es impar: def es_impar(numero): return numero % 2 != 0 #3. Verificar si un número es primo: def es_primo(numero): if numero < 2: return False for i in range(2, int(numero ** 0.5) + 1): if numero % i == 0: return False return True #4. Obtener los factores de un número: def obtener_factores(numero): factores = [] for i in range(1, numero + 1): if numero % i == 0: factores.append(i) return factores #5. Obtener la suma de los factores de un número: def obtener_suma_factores(numero): suma = 0 for i in range(1, numero + 1): if numero % i == 0: suma += i return suma #6. Obtener la cantidad de factores de un número: def obtener_cantidad_factores(numero): cantidad = 0 for i in range(1, numero + 1): if numero % i == 0: cantidad += 1 return cantidad #7. Obtener el máximo común divisor de dos números: def obtener_mcd(numero1, numero2): while numero2 != 0: resto = numero1 % numero2 numero1 = numero2 numero2 = resto return numero1 #8. Obtener el mínimo común múltiplo de dos números: def obtener_mcm(numero1, numero2): mcd = obtener_mcd(numero1, numero2) return (numero1 * numero2) // mcd #9. Obtener la suma de los dígitos de un número: def obtener_suma_digitos(numero): suma = 0 while numero != 0: suma += numero % 10 numero //= 10 return suma #10. Verificar si un número es perfecto: def es_perfecto(numero): suma = 0 for i in range(1, numero): if numero % i == 0: suma += i return suma == numero #11. Verificar si un número es abundante: def es_abundante(numero): suma = 0 for i in range(1, numero): if numero % i == 0: suma += i return suma > numero #12. Verificar si un número es deficiente: def es_deficiente(numero): suma = 0 for i in range(1, numero): if numero % i == 0: suma += i return suma < numero #13. Obtener la raíz cuadrada de un número: def obtener_raiz_cuadrada(numero): return numero ** 0.5 #14. Obtener la potencia de un número: def obtener_potencia(base, exponente): return base ** exponente #15. Obtener el factorial de un número: def obtener_factorial(numero): factorial = 1 for i in range(1, numero + 1): factorial *= i return factorial #16. Obtener el número de Fibonacci de un índice: def obtener_fibonacci(indice): if indice == 0: return 0 elif indice == 1: return 1 else: return obtener_fibonacci(indice - 1) + obtener_fibonacci(indice - 2) #17. Verificar si un número es un número de Fibonacci: def es_fibonacci(numero): if numero == 0 or numero == 1: return True a, b = 0, 1 while b < numero: a, b = b, a + b return b == numero #18. Obtener los números primos hasta un límite: def obtener_primos(limite): primos = [] for numero in range(2, limite + 1): es_primo = True for i in range(2, int(numero ** 0.5) + 1): if numero % i == 0: es_primo = False break if es_primo: primos.append(numero) return primos #19. Obtener la descomposición en factores primos de un número: def obtener_factores_primos(numero): factores_primos = [] divisor = 2 while divisor <= numero: if numero % divisor == 0: factores_primos.append(divisor) numero //= divisor else: divisor += 1 return factores_primos #20. Verificar si dos números son amigos: def son_amigos(numero1, numero2): suma_divisores1 = sum(obtener_factores(numero1)) - numero1 suma_divisores2 = sum(obtener_factores(numero2)) - numero2 return suma_divisores1 == numero2 and suma_divisores2 == numero1 #21. Obtener los números amigos hasta un límite: def obtener_amigos(limite): amigos = [] for numero1 in range(2, limite + 1): numero2 = sum(obtener_factores(numero1)) - numero1 if numero1 < numero2 and sum(obtener_factores(numero2)) - numero2 == numero1: amigos.append((numero1, numero2)) return amigos #22. Verificar si un número es un número perfecto de Mersenne: def es_mersenne(numero): exponente = 0 while 2 ** exponente <= numero + 1: if 2 ** exponente == numero + 1: return es_primo(numero) exponente += 1 return False #23. Obtener los números perfectos hasta un límite: def obtener_perfectos(limite): perfectos = [] for numero in range(2, limite + 1): if es_perfecto(numero): perfectos.append(numero) return perfectos #24. Obtener los números de Armstrong hasta un límite: def obtener_armstrong(limite): armstrong = [] for numero in range(1, limite + 1): suma = 0 for digito in str(numero): suma += int(digito) ** len(str(numero)) if suma == numero: armstrong.append(numero) return armstrong #25. Verificar si un número es un número de Harshad: def es_harshad(numero): suma_digitos = sum(int(digito) for digito in str(numero)) return numero % suma_digitos == 0 #26. Obtener los números de Harshad hasta un límite: def obtener_harshad(limite): harshad = [] for numero in range(1, limite + 1): if es_harshad(numero): harshad.append(numero) return harshad #27. Verificar si un número es un número de Kaprekar: def es_kaprekar(numero): cuadrado = str(numero ** 2) for i in range(1, len(cuadrado)): parte1 = int(cuadrado[:i]) parte2 = int(cuadrado[i:]) if parte1 != 0 and parte2 != 0 and parte1 + parte2 == numero: return True return False #28. Obtener los números de Kaprekar hasta un límite: def obtener_kaprekar(limite): kaprekar = [] for numero in range(1, limite + 1): if es_kaprekar(numero): kaprekar.append(numero) return kaprekar #29. Verificar si un número es un número de Smith: def es_smith(numero): factores_primos = obtener_factores_primos(numero) suma_digitos = sum(int(digito) for digito in str(numero)) suma_digitos_factores = sum(sum(int(digito) for digito in str(factor)) for factor in factores_primos) return suma_digitos == suma_digitos + factores_primos - 1 if len(factores_primos) > 1 else 0 #30. Obtener los números de Smith hasta un límite: def obtener_smith(limite): smith = [] numero = 4 while len(smith) < limite: if es_smith(numero): smith.append(numero) numero += 1 return smith

Geogebra Python