Python - ¿Cuál código es más eficaz y correcto? | Números primos

 
Vista:
sin imagen de perfil

¿Cuál código es más eficaz y correcto? | Números primos

Publicado por Hemberger (2 intervenciones) el 15/05/2017 21:42:22
Hola soy nuevo en este foro, tengo una gran duda entre dos programas que verifican si un número es primo o no, el asunto es que era para un examen y resulta que me lo corrieron como malo, espero que puedan darme su opinión y decirme qué es lo malo, gracias.

1) Este es el que pensé yo.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
numero=int (input("Numero>> "))
 
es_prime=True
 
if (numero% 2==0 and numero!=2):
        es_prime=False
if (numero% 3==0 and numero!=3):
	es_prime=False
if (numero% 5==0 and numero!=5):
	es_prime=False
if (numero% 7==0 and numero!=7):
	es_prime=False
 
if (es_prime):
	print ("Si, es primo")
else:
	print ("No es primo")


2) Este es el modelo que mi profesor considera correcto.

1
2
3
4
5
6
7
8
9
10
11
num=int (input("Su número >> "))
contador=0
vez=0
while (contador<num):
	contador+=1
	if (num % contador==0):
		vez+=1
if (vez==2):
	print ("Es primo")
else:
	print ("No es primo")
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

¿Cuál código es más eficaz y correcto? | Números primos

Publicado por CpA (33 intervenciones) el 15/05/2017 23:27:52
Tú algoritmo simplemente falla, mientras que el del profesor calcularía cualquier número entero.
Por ejemplo, para el número 121 tú algoritmo dirá que es primo, y sin embargo es divisible por 11 (11x11=121).

De todas formas, ahora que lo veo, el del profesor tampoco está del todo bien, ya que fallaría con el 1. Para el 1 dirá que no es primo...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

¿Cuál código es más eficaz y correcto? | Números primos

Publicado por Hemberger (2 intervenciones) el 16/05/2017 07:31:03
Ahhh ya veo, que descuidado fui, solo probé con los 25 primeros números primos, muchas gracias por tu observación, creo que no me hubiese dado cuenta por un largo largo tiempo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar