怎么去表示亏数完全数盈数的个数

img

想问一下完整的程序设计,主要是给定a b后如何去写亏数完全数盈数的个数

定义三个变量,判断一下返回值,如果是-1,a+=1,如果是0,b+=1,如果是1,c+=1
也可以用数组
c=[0]*3
c[func()+1]+=1

代码如下,如有帮助 请点击一下采纳谢谢:


w = 0
w_k = 0
w_y = 0

def is_(m, n):
    for i in range(m, n, 1):
        y = 1
        for j in range(2, i):
            if i % j == 0:
                y += j
            else:
                y += 0
        if i == y:
            print(i)
            global w
            w += 1
        if i > y:
            global w_k
            w_k += 1
        if i<y:
            global w_y
            w_y += 1

is_(10000, 12345)
print(w_k, w, w_y)

优化了 执行速度很快


from functools import reduce

def factors2(n):
    res  = set(reduce(list.__add__,
                  ([i, n // i] for i in range(1, int(n ** 0.5) + 1) if n % i == 0)))
    res.remove(n)
    return res

if __name__ == '__main__':
    a = 10000
    b = 12345
    dic = {-1:0, 0:0, 1:0}
    for i in range(a, b):
        if sum(factors2(i)) > i:
            dic[-1] += 1
        elif sum(factors2(i)) <i :
            dic[0] += 1
        else:
            dic[1] += 1
    print(dic)

img