Código:
n=input('ingrese un numero ') sumatorio=0 lista=[] for i in range(1,n): if n%i==0: sumatorio=sumatorio+i lista.append(i) if sumatorio==n: print n,'es un numero perfecto y sus divisores propios son los numeros que estan en la siguiente lista: ',lista else: print 'no es perfecto'
Código:
ingrese un numero 9999999999999999999 Traceback (most recent call last): File "perfecto.py", line 2, in <module> for j in xrange(1,n): OverflowError: long int too large to convert to int
- - - Actualizado - - -
Código:
import operator def lrange(num1, num2 = None, step = 1): op = operator.__lt__ if num2 is None: num1, num2 = 0, num1 if num2 < num1: if step > 0: num1 = num2 op = operator.__gt__ elif step < 0: num1 = num2 while op(num1, num2): yield num1 num1 += step print list(lrange(111111111111111111111111111, 111111111111111111111111121))
[FONT=verdana]>>> import mirango[/FONT]
[FONT=verdana]>>> mirango.lrange(num1,num2)[/FONT]
[FONT=verdana]aca debería darme la lista desde num1 a num2-1, es decir, [num1,...,num2-1]. Qúe le modifico al código?[/FONT]
- - - Actualizado - - -
[FONT=Arial]Este es mi nuevo codigo:
[/FONT]
Código:
n=input('ingrese un numero ') import generador sumatorio=0 lista=[] for i in list(generador.fn_generadora(1,n,1)): if n%i==0: sumatorio=sumatorio+i lista.append(i) if sumatorio==n: print n,'es un numero perfecto y sus divisores propios son los numeros que estan en la siguiente lista: ',lista else: print 'no es perfecto'
[/FONT]
Código:
def fn_generadora(inicial,final,paso): iterador=inicial while (iterador<final): yield iterador iterador=iterador+paso
Comentario