题解 | #完全数计算#

完全数计算

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
全部评论
算公约数不能用1到sqrt(num)吧, 要用也是 num/2。
点赞 回复 分享
发布于 03-29 20:14 日本
谢谢提醒,我修改一下
点赞 回复 分享
发布于 2021-11-22 15:59
除了i != 1这个条件,应该还要加上i!=num/i吧,不然会有重复的。比如num=9,你的res里应该就是[1,3,3]
点赞 回复 分享
发布于 2021-11-22 15:51

相关推荐

有没有友友知道hr面会问什么我应该反问什么?还有如何防止hr套话啊?还有应该如果催hr推进快一点#字节#OPPO#hr面
牛客989988346号:职业规划,优缺点,为什么选择这个岗,对应聘公司产品的了解和满意度,如果让你改进公司产品你会怎么做,对ai(新技术)的了解,有无其他offer,什么时候能到岗
投递OPPO等公司9个岗位 >
点赞 评论 收藏
分享
评论
12
1
分享

创作者周榜

更多
牛客网
牛客企业服务