在python中工作我需要按升序返回前n个数字的列表。丰富的数字是一个小于其完美除数之和的整数。例如,12是一个丰富的数字,因为它的完美除数(1,2,3,4和6)加起来为16。 函数abundant(n)应该返回一个列表,该列表包含按升序排列的前n个丰富数字。例如,丰富的(7)会返回一个包含前七个数字的列表。
我试过用:
def abundant(n):
def factors(value):
factors = [x for x in range(1, value + 1 // 2 + 1) if value % x == 0]
return factors
if sum(factors) > value:
return value
abundant = factors()
return abundant[:n]
答案 0 :(得分:1)
我不是python的专家,但我建议使用for循环,所以:
# From 1 to 10
n = 0
for i in range(10):
n = n + 1
abundant(n)
希望这有帮助!
答案 1 :(得分:0)
由于声明为全局列表,因此无需返回Abn列表
abn=[] #to store abundant nos.
def factors(n):
s=1
if n==1:
return 1
if n%2==0:
step=1
else:
step=2
r=int(n**.5)
if(r**2==n):
r-=1
s+=r+1
# s-sum
f=2
#print("n= ",n)
while(f<=r):
if n%f==0:
s+=f+n//f
#print(f,n//f)
if(s>n):
abn.append(n) #if sum is going to be greater than n iam storing them in abn list
return n
f+=step
else:
return 0
n=int(input())
for i in range(12,n+1): #since 12 is the first abn. no the range starts from 12
factors(i)
abn.sort()
print("abn. nos list: ",abn)