题解 | #完全数计算#

完全数计算

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

while True:
    try:
         n=int(input())
         L=[]
         for i in range(1,n):
             p=0
             for y in range(1,i):
                 if i%y==0:
                     p=p+y
             if i==p:
                 L.append(p)
         print(len(L))
    except:
        break 
全部评论
第二个循环for y in range(1,i)不用到i,到(i//2+1)就行了,超过一半之后剩下的公约数就是它本身,所以超过半数之后就没必要遍历了
17 回复 分享
发布于 2022-03-02 21:08
第一个for循环应该是range(1,n+1)
15 回复 分享
发布于 2022-02-07 17:55
提示:运行超时:您的程序未能在规定时间内运行结束,请检查是否循环有错或算法复杂度过大。
5 回复 分享
发布于 2022-02-21 15:13
还可以更优化,循坏到i的平方根+1即可,然后成对添加、去重
点赞 回复 分享
发布于 2022-06-04 16:46
输入6 得 0 错的 应该是1
1 回复 分享
发布于 2023-03-08 21:34 广东
点赞 回复 分享
发布于 2022-01-02 23:11
我的一样的,超时
点赞 回复 分享
发布于 2022-03-02 20:18
p=0为什么写在循环上面会输出0呀
点赞 回复 分享
发布于 2022-04-26 17:50
超时啦
点赞 回复 分享
发布于 2022-09-06 11:17 山西
您的程序未能在规定时间内运行结束,请检查是否循环有错或算法复杂度过大。
点赞 回复 分享
发布于 2022-09-29 23:04 江苏
这个答案不对呀 28的时候是7
点赞 回复 分享
发布于 2023-03-11 22:48 上海
n = int(input()) count = 0 for num in range(1,n+1): factor_add = 0 for i in range(1,num): if num % i == 0: factor_add += i if factor_add == num: count += 1 print(count)
点赞 回复 分享
发布于 2023-03-23 10:45 四川

相关推荐

一名愚蠢的人类:多少games小鬼留下了羡慕的泪水
投递荣耀等公司10个岗位
点赞 评论 收藏
分享
09-29 17:44
已编辑
蔚来_测(准入职员工)
//鲨鱼辣椒:见不了了我实习了四个月上周再投筛选了一天就给我挂了
点赞 评论 收藏
分享
32 6 评论
分享
牛客网
牛客企业服务