Si p es un número primo (2, 3, 5, 7, 11, 13…), entonces, para cada número natural a, con a>0 (a mayor a 0), a**p a(p elevado a la a) ≡ a (mod p) (mod significa módulo) [a**p ≡ a (mod p)]
p = 2 #Número primo
a = 1 #Menos a p
print(a**p % p) # = a
# a (1) elevado a la p (2) es igual a 1 (1*1=1), el resultado (1) módulo 2 es igual a 1 (a).
print(1 % 2)
¿En qué se usa este algoritmo?
Encriptación: Por ejemplo, si n es un número de 300 dígitos podemos usar el test de Fermat para revisar si es un número primo en segundos. RSA algorithm para encriptación. (Algoritmo RSA) Existen los números de Carmichael qué pueden «engañar» este teorema (Carmichael)
El ordenamiento de burbuja (Bubble Sort en inglés) es un sencillo algoritmo de ordenamiento. Funciona revisando cada elemento de la lista que va a ser ordenada con el siguiente, intercambiándolos de posición si están en el orden equivocado. Es necesario revisar varias veces toda la lista hasta que no se necesiten más intercambios, lo cual significa que la lista está ordenada.
vec = [5, 2, 3, 1, 4]
#El len a vec hace que sea adaptable al tamaño que podría tener la lista
for i in range(len(vec)+ 1):
#Sirve para tomar el anterior número para posteriormente compararlo
for x in range(len(vec)- i - 1):
#Intercambio
if vec[x] > vec[x + 1]:
print(vec)
aux = vec[x]
vec[x] = vec[x + 1]
vec[x + 1] = aux
print(vec)
Fuente: Juan Ramírez | Verificado por: Maximiliano Vasques
Para saber el promedio de un número «x» de variables, se tienen que sumar entre si, y luego se dividen por el número de la cantidad de variables que hay a promediar.
Ingreso de datos:
Se ingresan en este caso 3 números enteros a 3 variables.
Asignación de variable resultado:
«resultado» almacena el valor de la suma de «numero1» más «numero2» más «numero3».
Asignación a variable promedio:
«promedio» almacena el valor de «resultado» dividido por 3. (3 en este caso ya que son la cantidad de variables a calcular).
Devolver el resultado:
Se utiliza «print()».
numero1 = int(input("ingrese su primer número: "))
numero2 = int(input("ingrese su segundo número: "))
numero3 = int(input("ingrese su tercer número: "))
resultado = numero1 + numero2 + numero3
promedio = resultado/3
print(f"El promedio es {promedio}")
Fuente: Juan Ramírez | Verificado por: Maximiliano Vasques
En matemáticas y estadística, la media geométrica de una cantidad arbitraria de números (por decir n números) es la raíz n-ésima del producto de todos los números; es recomendada para datos de progresión geométrica, para promediar razones, interés compuesto y números índice.
Por ejemplo, la media geométrica de 2 y 18 es la raíz cuadrada del producto de ambos . Otro ejemplo, la media geométrica de 1, 3 y 9 sería la raíz cúbica del producto de los tres números .
Las entradas de números enteros se realizan con la función «int», en este caso se solicitan 3 datos.
Asignación de variable «media»:
El primer valor que toma «media» es la multiplicación de «numero1» por «numero2» por «numero3».
La segunda asignación se trata de potenciar este resultado por 1 dividido 3.
Imprimir resultado:
Se realiza con «print()»
numero1 = int(input("ingrese su primer número: "))
numero2 = int(input("ingrese su segundo número: "))
numero3 = int(input("ingrese su tercer número: "))
media = numero1*numero2*numero3
media = media**(1/3)
print(f"La media geomética es {media}")
«tf.keras.layers.Dense» Hace referencia que define una capa de tipo densa. (Las capas de tipo densa significan que cada neurona de una capa, tienen conexiones a todas las neuronas de la siguiente capa).
«units = 1» Hace referencia que hay una neurona de salida.
«input_shape = [1]» Significa que hay una capa de entrada con una sola neurona.
«modelo = tf.keras.Sequential([capa])» Definición de modelo de capa secuencial, asignado a nuestra variable «capa».
Para el optimizador se utiliza el algoritmo Adam (Adam es un algoritmo de optimización que se puede utilizar en lugar del procedimiento de descenso de gradiente para actualizar los pesos de red de forma automática), en este caso se le asigna el valor de 0.1, porque poco puede hacer lenta la red, y mucho, pasarse del resultado esperado.
modelo.compile(
optimizer = tf.keras.optimizers.Adam(0.1),
loss = 'mean_squared_error'
)
Entrenamiento
Se utiliza la función «.fit» sobre el modelo, ejemplo «modelo.fit» especificando los datos de entrada (En este caso la lista celcius) y los datos de salida (En este caso fahrenheit), luego se definen las épocas por las que iterará, con la función «epochs = valor» y para solo imprimir lo esencial se utiliza «verbose = False»
(Qué tan mal están los resultados en cada iteración de aprendizaje en las épocas)
import matplotlib.pyplot as plt
plt.xlabel("# Epoca")
plt.ylabel("Magnitud de pérdida")
plt.plot(historial.history["loss"])
Predicción
En este caso se hace una predicción de cuantos son 100 grados celcius en fahrenheit, «El resultado es[[211.74268]]fahrenheit», En realidad es 212 fahrenheit, pero redondeandolo es correcto, una opción podría ser redondearlo con la función round de pythonpara estos casos.
Fuente: Juan Ramírez | Verificado por: Maximiliano Vasques
Si un bucle mientras (while), no tiene una condición para finalizar la iteración, va a repetirse sin limites. (Mucho cuidado con esto, ya que puede consumir tu memoria RAM).
Fuente: Juan Ramírez | Verificado por: Maximiliano Vasques
Podemos contar hacia atrás con funciones, llamándolas entre si recursivamente. Veamos como hacerlo:
– Solución en Python
#Ingresar el valor de la variable numero
numero = int(input("ingrese un valor para n: "))
#Definición de la función
def cuentaAtras(numero):
#Si la variable numero es igual a 0...
if numero == 0:
#Imprimir "Cuenta finalizada"
print("Cuenta finalizada")
#Si no
else:
#Imprimir variable numero
print(numero)
#Restar por uno a la variable numero
cuentaAtras(numero-1)
#Ejecutar función
cuentaAtras(numero)
– ¿En qué se usa este algoritmo?
Estudiar: Es muy práctico para aprender como funciona la recursividad.
Fuente: Juan Ramírez | Verificado por: Maximiliano Vasques
Para saber si un número es par (0,2,4,6, etc.) se puede dividir y en caso que el resto sea 0, significa que es un número par.
– Solución en Python
#Se pide el número como tipo de dato decimal/flotante
num = float(input("Ingrese un número: "))
#Si numero modulo 2 es igual a 0 entonces...
if num % 2 == 0:
#Imprimir el siguiente texto
print(f"El número {num} es par")
#Si no...
else:
print(f"El número {num} es impar")
– ¿En qué se usa este algoritmo?
Estudiar: Es muy práctico para aprender como funcionan los condicionales.