En este tutorial te enseñaré cómo se pueden aplicar muchos de los conceptos relacionados con los “loops” vistos en clase y lo haré con un caso interesante: los número primos. Para ello me valdré de los ciclos “for” y del uso de los condicionales “if”. Igualmente te mostraré el uso de la función aprendida “%” que nos permite ver si la división es exacta o no.
Para entender mejor, veamos la definición de número primo:
En matemáticas, un número primo es un número natural mayor que 1 que tiene únicamente dos divisores positivos distintos: él mismo y el 1.1 Por el contrario, los números compuestos son los números naturales que tienen algún divisor natural aparte de sí mismos y del 1, y, por lo tanto, pueden factorizarse. El número 1, por convenio, no se considera ni primo ni compuesto.
Los 168 números primos menores que 1000 son:
2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991 y 997 (sucesión A000040 en OEIS).
Fuente: Wikipedia
A continuación te presento un programa sencillo que nos permite encontrar el último número primo dado que el usuario ingresa un número límite, utilizando los comandos “for” e “if”. Espero que sea muy útil para ti!!!
limite_usuario = input("Ingresa el número límite: ")
if limite_usuario.isdigit():
limite_usuario = int(limite_usuario)
ultimo_primo_encontrado = None
fornumin range(limite_usuario, 1, -1):
ifnum <= 1:
continue
es_primo = True
for i in range(2,int(num ** 0.5) + 1):
ifnum % i == 0:
es_primo = False
breakif es_primo:
ultimo_primo_encontrado = num
breakif ultimo_primo_encontrado isnotNone:
print(f"El último número primo hasta {limite_usuario} es: {ultimo_primo_encontrado}")
else:
print(f"No se encontraron números primos hasta {limite_usuario}")
else:
print("Por favor, ingresa un número válido.")
En este caso, se podrá notar que si el usuario ingresa un valor que no es numérico, el programa lanzará un mensaje que dice “Por favor, ingresa un número válido.” y luego habrá que volver a correr el programa.
Espero que te sea útil para aprender cómo usar las anidaciones de los “for” incluyendo muchas de las cosas vistas en clase!