Python两个for循环解决 | #完全数计算#

完全数计算

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

1. 定义一个真因子列表的方法
2. 用循环判断约数和是否等于本身
def factorlist(num):
    if num==1:
        return False
    list=[]
    for i in range(1,num):
        if num%i==0:
            list.append(i)
    return list
 
while True:
    try:
        n=int(input())
        count = 0
        for j in range(2,n+1):
            m = sum(factorlist(j))
            if m == j:
                count += 1
        print(count) 
    except:
        break


全部评论
n大了,两层循环时间复杂度过不了~
3
送花
回复
分享
发布于 2021-10-19 23:14
factorlist函数中,其实可以取消if num==1:return False,然后range(1,num+1)即可
2
送花
回复
分享
发布于 2022-02-02 16:51
秋招专场
校招火热招聘中
官网直投
不需要改成range(1,num+1)
点赞
送花
回复
分享
发布于 2022-11-07 07:00 荷兰
本想着把factorlist方法中的循环for i in range(1,num//2):折半,a=i,b=num//i,sum = sum+i+b,发现用例不能全通过,存在因子相同问题,还是从头遍历到尾吧
点赞
送花
回复
分享
发布于 2023-04-18 22:29 江苏

相关推荐

头像
04-09 14:29
Java
点赞 评论 收藏
转发
21 7 评论
分享
牛客网
牛客企业服务