Foros del Web » Programando para Internet » Python »

problema con python cuestion nº primos

Estas en el tema de problema con python cuestion nº primos en el foro de Python en Foros del Web. tengo q implementar unprograma que me de una lista de numeros primos existentes en un intervalo y el sumatorio de los mismo . he pensado ...
  #1 (permalink)  
Antiguo 10/12/2010, 15:20
 
Fecha de Ingreso: diciembre-2010
Mensajes: 5
Antigüedad: 13 años, 4 meses
Puntos: 0
Información problema con python cuestion nº primos

tengo q implementar unprograma que me de una lista de numeros primos existentes en un intervalo y el sumatorio de los mismo . he pensado hacer 2 funciones , una que me diga si el nº es primo o no y otra que imprime pero nose como unir ambas ni como hacer el sumatorio de los numeros de la lista. aqui os dejo lo que he hecho por si alguien me puediera ayudar.Muchas gracias ;)

Código PHP:
def primo(x):
    if 
x==2:
        return(
True)
    if 
x%2==0:
        return(
False)
    
i=3
    
while i**2<=0:
        if 
x%1==0:
            return(
False)
    
i=i+2
    
return(True)

def lista_primos(n):
    while 
primo(x)==True:
        for 
x in range(2,n):
            return(
x)
        
    
print(
"Vamos a calcular los numeros primos de un intervalo")   
n=int(input("Introduce el numero"))
print(
"El resultado es:",lista_primos(n)) 
  #2 (permalink)  
Antiguo 10/12/2010, 15:44
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: problema con python cuestion nº primos

Tus funciones ni siquiera hacen lo que deben. Si en cierta parte te creo que tu las hayas hecho, te diré donde están tus errores:


Código:
def primo(x): 
    if x==2: 
        return(True)
    if x%2==0:
        return(False) 
    i=3 
    while i**2<=0: #Error en la condicion
        if x%1==0: #Error en la condicion
            return(False) 
    i=i+2 #Error al indentar
    return(True) 

def lista_primos(n): 
    while primo(x)==True: #Error x no definido, creo que ni siquiera es necesaria este loop
        for x in range(2,n): 
            return(x) #Error logico, solo se ejecuta 1 vez
         
     
print("Vamos a calcular los numeros primos de un intervalo")    
n=int(input("Introduce el numero")) 
print("El resultado es:",lista_primos(n))
Definitivamente tienes muchos errores, puedes corregirlos o empezar desde 0 otra vez.

Última edición por razpeitia; 10/12/2010 a las 18:52
  #3 (permalink)  
Antiguo 11/12/2010, 13:17
 
Fecha de Ingreso: diciembre-2010
Mensajes: 5
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: problema con python cuestion nº primos

lo he vuelto a intentar hacer pero sin buenos resultados si tu pudieras indicarme como mejorarlo.grcias

Código Python:
Ver original
  1. def primos(n):
  2.     for i in range(2,n):
  3.         for x in range(2,i):
  4.             if i%x==0:
  5.                 break
  6.             else:
  7.                 return(i)
  8.            
  9. def sumadig(n):
  10.     nstr=str(n)
  11.     lista=[]
  12.     for i in range (len(nstr)):
  13.         lista.append(nstr[i])
  14.  
  15.     suma=0
  16.     for i in lista:
  17.         suma +=int(i)
  18.     return(suma)  
  19.  
  20.  
  21. n=int(input("Introduzca el intervalo n"))
  22. print("El resultado es:",sumadig(n))
  #4 (permalink)  
Antiguo 11/12/2010, 13:37
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: problema con python cuestion nº primos



¿Como pudiste empeorar el código que ya tenias? El otro se acercaba un poco mas.
Este ya ni siquiera se acerca a lo que quieres.

Empieza con código "humano" (pseudo-código) y luego pásalo a la maquina.
Código:
Por cada numero x entre 1 y n
    Chechar si x es primo
        Si x es primo imprimirlo y añadelo a una variable de suma
Así se ve un poco mas simple y claro, no?
Ahora solo falta pasarlo a la maquina.

Te recomiendo leer un poco, has en papel tu algoritmo para que vayas entendiendo paso por paso.

Última edición por razpeitia; 11/12/2010 a las 15:07
  #5 (permalink)  
Antiguo 11/12/2010, 13:52
 
Fecha de Ingreso: diciembre-2010
Mensajes: 5
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: problema con python cuestion nº primos

gracias por tu ayuda pero lo dejo porque no alcanzo a entender nada siento haberte molestado.
  #6 (permalink)  
Antiguo 11/12/2010, 15:23
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: problema con python cuestion nº primos

Trata de explicarme cada linea de código de tu programa.

A la mejor tienes problemas con return, break, indentación de código, etc..
Ademas de problemas con matemáticas.

Recuerda que un numero es primo si sus divisores son solo 1 y el mismo.
Por ejemplo:
Código:
 #: Divisores    Es primo
 2: 1, 2         Si
 3: 1, 3         Si
 4: 1, 2, 4      No
 5: 1, 5         Si
 6: 1, 2, 3, 6   No
 7: 1, 7         Si
 8: 1, 2, 4, 8   No
 9: 1, 3, 9      No
10: 1, 2, 5, 10  No
Entonces si pruebo sus divisores, entre 2 y (n - 1)* si algún numero entre ese rango divide a n entonces no es primo de lo contrario es primo.

*Este rango se puede optimizar.

PD: Recuerda para checar si un numero es divisible entre otro, por ejemplo.
8 es divisible por 2
Para saber si un numero es divisible entre otro solo basta checar si el residuo es 0

Ejemplo:
8 % 2 = 0
De todas formas checa este libro (pagina 113), tiene un apartado de primos. (Pero recuerda no solo copiar el código y ya, de otra forma no estarías aprendiendo)
  #7 (permalink)  
Antiguo 12/12/2010, 12:11
 
Fecha de Ingreso: diciembre-2010
Mensajes: 5
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: problema con python cuestion nº primos

Razpeita muchas gracias por tu atencion me leido el manual y he escrito la siguiente funcion, pero me sale que :line 15, in <module>
(primos,suma)=numeros_primos(n)
TypeError: 'NoneType' object is not iterable

Aqui te dejo la funcion por si le puedes echar 1a ojeada.gracias

Código Python:
Ver original
  1. def numeros_primos(n):
  2.     primos=[1]
  3.     suma=1
  4.     for num in range(2,(n+1)):
  5.         for div in (primos[1:]):
  6.             if num % div==0:
  7.                 break
  8.             else:
  9.                 primos.append(num)
  10.                 suma +=num
  11.                 return(primos,suma)
  12.  
  13.  
  14. n=int(input("Introduzca el final del intervalo"))
  15. (primos,suma)=numeros_primos(n)
  16. print("Los nº primos del intervalo son:",primos,"La suma de los mismos es:",suma)
  #8 (permalink)  
Antiguo 12/12/2010, 12:37
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: problema con python cuestion nº primos

Linea 11 tienes mal indentado return(primos, suma).

Ademas acabo de hacer un aporte sobre números primos así que no estaría que lo leyeras.

Etiquetas: primos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:47.