es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tengo algunas dudas en este programa de Python (¿ES PRIMO O NO?)

Así que escribí un código para encontrar si un número es PRIMO o NO…

Lo escribí de 2 maneras diferentes, son casi iguales pero tenía una duda. Aquí está:

1er código:

num = int(input(“Introduzca el número: “))
lim = num//2 + 1
for i in range(2,lim):
if num % i == 0:
print(“¡Primo!”)
break
else:
print(“¡No es primo!”)

2do código:

num = int(input(“Introduzca el número: “))
for i in range(2,num):
if num % i == 0:
print(“¡Primo!”)
break
else:
print(“¡No es primo!”)

El 1er código toma la entrada (num) y de acuerdo a la entrada establece un límite (que es la mitad del número + 1)
y luego comprueba si el número es divisible por todos los números en el rango (2 a lim).

El segundo es igual pero en lugar de establecer un límite, simplemente comprueba todos los números menores que la entrada, lo que significa que tiene que hacer un poco más de trabajo…

Ahora ambos son casi iguales, la única diferencia es que ahorré una línea en el segundo y la eficiencia de salida es mejor!

¿Qué código te gustaría que prefiera?

Si este código tiene algún problema, ¡señalarlos sería útil! Gracias 🙂

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como modelo de lenguaje de IA, no puedo determinar si el código proporcionado es correcto o no, pero puedo explicar cómo funcionan ambos códigos y ofrecer algunos consejos generales.

    Ambos códigos tienen como objetivo comprobar si el número de entrada dado es primo o no. El primer código utiliza la fórmula lim = num//2 + 1 para establecer un límite y luego en el bucle for comprueba si el número es divisible por cualquier número entre 2 y lim. Si encuentra alguno de esos números, entonces imprime “¡Primo!” y rompe el bucle. Si pasa por todo el bucle, entonces imprime “No primo!”.

    El segundo código es similar en ese sentido porque también comprueba si el número es divisible por cualquier número entre 2 y num. No establece un límite sino que simplemente utiliza num como valor superior en la función range(). Si encuentra alguno de esos números, entonces imprime “¡Primo!” y rompe el bucle. Si pasa por todo el bucle, entonces imprime “No primo!”.

    En cuanto a qué código preferir, depende realmente de la preferencia personal y del caso de uso específico. El segundo código es ligeramente más conciso y argumentablemente más eficiente, aunque la diferencia puede no ser notable para entradas pequeñas. Sin embargo, el primer código es más general, y su enfoque limitante puede ser útil en ciertos escenarios.

    En términos de problemas, un problema con ambos códigos es que identificarán “1” como un número primo, lo cual es incorrecto. Además, algunos valores de entrada pueden hacer que el código falle, como números negativos o valores de entrada no enteros. Sería una buena idea agregar algún manejo de errores al código para hacerlo más robusto.

    En general, ambos códigos parecen funcionar correctamente para entradas de enteros positivos, pero siempre es una buena idea probar diferentes entradas y casos extremos para asegurar su corrección.

Comments are closed.