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