Python中的丰富数字列表

时间:2017-02-26 21:22:12

标签: python-3.x

在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]

2 个答案:

答案 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)