Escribí usando una función un programa que devuelve si un número entero es primo o no.
Tuve que probar ya que no tengo claro si empieza la iteración con i=2, o con i=3.
Así como lo escribí funciona bien.
Pero si lo pienso no entiendo si num=2 y comienza en i=2 , entonces num%i==0 lo que daría como resultado 'no primo'.
No se si entiende mi duda.
El tema es que deberías realizar la iteración hasta num-1 ya que siempre num va a ser divisible sobre num.
Saludos
Por eso mismo no entiendo como funciona la iteración.
Cambio la pregunta, por ejemplo como está escrito el programa 5 sería no primo, sin embargo me devuelve primo. Es decir que: ¿no compara hasta num%num?
Son mis primeros pasos en programación, tengan paciencia!!.
Saludos
Cambio la pregunta, por ejemplo como está escrito el programa 5 sería no primo, sin embargo me devuelve primo. Es decir que: ¿no compara hasta num%num?
Son mis primeros pasos en programación, tengan paciencia!!.
Saludos
5 es primo si solo es divisible entre 1 y 5. Por lo tanto para saber si 5 es primo, hay que dividir entre 2, 3, y 4, y ver que ninguna de esas divisiones de justo.
Ese es el método seguro, aunque se pueden ahorrar algunas divisiones.
De acuerdo con Jorge que 5 es primo.
Este es el programa que escribí es este y me devuelve que 5 es primo ( se que es correcto!!), pero si lo analizo mirando la iteración me parece que no compara num%num==0, porque sino me daria no primo. La duda mía es desde que i hasta que i se realiza la iteración.
# defino la funcion primo
def primo(num):
if num <2:
return "primo"
for i in range(2,num):
if num % i == 0:
return 'no primo'
return 'primo'
#Programa principal
num= input ('ingrese un numero entero:')
pri= primo(num)
print 'Es un numero:',pri
Muchas gracias por las respuestas, voy a seguir probando con los otros ejercicios.
Este es el programa que escribí es este y me devuelve que 5 es primo ( se que es correcto!!), pero si lo analizo mirando la iteración me parece que no compara num%num==0, porque sino me daria no primo. La duda mía es desde que i hasta que i se realiza la iteración.
# defino la funcion primo
def primo(num):
if num <2:
return "primo"
for i in range(2,num):
if num % i == 0:
return 'no primo'
return 'primo'
#Programa principal
num= input ('ingrese un numero entero:')
pri= primo(num)
print 'Es un numero:',pri
Muchas gracias por las respuestas, voy a seguir probando con los otros ejercicios.
Exácto María, la función range() genera una lista de números que corresponde con un intervalo semiabierto, cerrado por izquierda y abierto por derecha. Por tanto, nunca llega al segundo valor que es pasado como parámetro a range().
Por ejemplo, si ejecutamos el interprete Python y escribimos éste código:
>>> for i in range(0, 6):
... print i
...
retorna como salida:
0
1
2
3
4
5
Con lo cual podemos ver que la variable i nunca toma el valor 6.
Matemáticamente range(x,y) define una lista de números equivalente a la que define el intervalo [a,b)
saludos
andrés
Ojo con las indentaciones, supongo que al pegar el programa las perdiste, pero aviso por si alguien quiere basarse en el ejemplo de María.
saludos
Buenísimo Andrés, ahora si!!!! comprendido.
Las indentaciones, son las tabulaciones correspondientes a los bloques???
Si es esto, se perdieron cuando las pegué en el mensaje, pero yo en mi primer intervención subí el archivo numprimo.py y allí están.
Saludos y gracias!!!!
Las indentaciones, son las tabulaciones correspondientes a los bloques???
Si es esto, se perdieron cuando las pegué en el mensaje, pero yo en mi primer intervención subí el archivo numprimo.py y allí están.
Saludos y gracias!!!!
Si, las indentaciones se utilizan para definir los bloques. Puede hacerse con tabulación o con espacios, lo importante es ser consistente, si usamos espacios no podemos mezclar tabulación y viceverza. Muchos editores de texto (gedit es uno de ellos) permiten cambiar el caracter de tabulación por espacios para no cometer errores y simplificar a la hora de escribir. Veo que en el .py indentaste con espacios y quedó perfecto!
saludos
andrés
Una forma que tenés para ver que valores está tomando la variable "i" es intercalar la sentencia
print i
inmediatamente luego del for, de forma de ver que valores toma.
Saludos
print i
inmediatamente luego del for, de forma de ver que valores toma.
Saludos
Lo voy a probar.
Gracias
Gracias