Python - Ayuda numeros perfectos (python)

 
Vista:

Ayuda numeros perfectos (python)

Publicado por Francisco (3 intervenciones) el 05/04/2011 05:55:56
Necesito ayuda con un scrip que encuentre los primeros 4 numeros perfectos.
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

Ayuda numeros perfectos (python)

Publicado por Francisco (3 intervenciones) el 05/04/2011 06:04:28
Podrian ayudarme a corregir el codigo, no me anda bien, el codigo es este:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#FUNCION
def perfecto(x):
    i,suma,k,j=1,0,1,2
    l=[]
    while(i<x):                            #indica cuantos numeros perfectos se desean encontrar
        while(j<j+1):                     #ciclo que corre infinitamente
            k=1
            while (k<j):                    # se encuentran los numeros  divisores del numero j y se suman
                if(j%k==0):
                    suma=suma+k
                k=k+1
            if(suma==j):                   #si la suma es igual a j, j se añade en una fila.
                    l.append(j)
                    i=i+1
            j=j+1
    return(l)                                 #regresa la fila con los numeros perfectos
 
 
#PROGRAMA PRINCIPAL
print('NUMEROS PERFECTOS')
x=int(input('cuantos numeros perfectos deseas encontrar:'))
print('los numeros perfectos son:',perfecto(x))



porfavor ayudenme a encontrar el error, el programa corre pero entra en un ciclo infinito.
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
Imágen de perfil de xve
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Ayuda numeros perfectos (python)

Publicado por xve (1646 intervenciones) el 05/04/2011 08:39:47
Hola Francisco esta instrucción, siempre se cumple: while(j<j+1)... le estas diciendo que realice un bucle siempre y cuando "j" sea mas pequeño que "j+1"... ejemplo, si j vale 3 le estas diciendo que realice el bucle siempre y cuando 3<4... siempre se cumple.
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

Ayuda numeros perfectos (python)

Publicado por Francisco (3 intervenciones) el 05/04/2011 21:53:03
Estuve analizando el codigo y si tienes razon, aun asi el codigo no me anda bien seguire analizando hasta encontrar el error(es)
.
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

Ayuda numeros perfectos (python)

Publicado por Camila (1 intervención) el 18/11/2012 23:36:12
Hola,
Mmmmmm yo creo que el error puede ser que en :

while(j<j+1): ...

Deberias cambiar la primera variable j por z..., y luego cambiar lo que está hacia abajo, es decir:

while(z<j+1): ...

Esop, se que ya es muy tarde, pero espero que te ayude XD
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

Ayuda numeros perfectos (python)

Publicado por Evys Ancede (16 intervenciones) el 19/11/2012 15:47:38
Mi Internet es bastante mala y no he podido acceder bien a la pagina asi que te respondo por tu correo. La función is_perfect() la saque del libro “Introducción a la programación con Python” de Andrés Marzal e Isabel Gracia de la Universidad de Jaume I
Y el resto del código lo escribí para ti y he probando que funciona. Modifica el código a tu manera para obtener lo que quieras.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#! /usr/bin/python
 
def is_perfect(n):
    sumatorio = 0
    for i in range(1, n):
        if n % i == 0:
            sumatorio += i
    return sumatorio == n
 
array = []
punto_partida = 1
while len(array) < 4:
    if is_perfect(punto_partida):
        array.append(punto_partida)
    punto_partida += 1
 
print(array)
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