题解 | #完全数计算#

完全数计算

http://www.nowcoder.com/practice/7299c12e6abb437c87ad3e712383ff84

难点:

  1. 限制1s的周期,所以要在约数的部分进行简化,用1到sqrt(num),进行枚举,不要选择1到num;
  2. 这个题目要求的是:在某个数之内的完美数的个数,容易混淆题意。
def gongyueshu(num):
    res = []
    for i in range(1, int(num**0.5)+1):
        if num%i == 0:
            res.append(i)
            if i != 1:
                res.append(int(num/i))
    return res

while True:
    try:
        count = 0
        num = int(input())
        for n in range(2, num+1):
            res = gongyueshu(n)
            if (res != []) and (sum(res) == n):
                count += 1
            else:
                continue
        print(count)
    except:
        break
全部评论
除了i != 1这个条件,应该还要加上i!=num/i吧,不然会有重复的。比如num=9,你的res里应该就是[1,3,3]
点赞 回复
分享
发布于 2021-11-22 15:51
谢谢提醒,我修改一下
点赞 回复
分享
发布于 2021-11-22 15:59
滴滴
校招火热招聘中
官网直投

相关推荐

9 1 评论
分享
牛客网
牛客企业服务