1

Cómo obtener el último número primo cuando se ingresa un número límite

Diego Mario
dcorzo
2008

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!

Escribe tu comentario
+ 2