首页 > 试题广场 >

完数

[编程题]完数
  • 热度指数:7518 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
    求1-n内的完数,所谓的完数是这样的数,它的所有因子相加等于它自身,比如6有3个因子1,2,3,1+2+3=6,那么6是完数。即完数是等于其所有因子(除了它自己)相加和的数。

输入描述:
    测试数据有多组,输入n,n数据范围不大。


输出描述:
    对于每组输入,请输出1-n内所有的完数。如有案例输出有多个数字,用空格隔开,输出最后不要有多余的空格。
示例1

输入

6

输出

6
while True:
    try:
        n=int(input().strip())
        def yinshu(n):
            list1=[]
            if n==1:
                return list1
            else:
                for i in range(1,n//2+1):
                    if n%i==0:
                        list1.append(i)
                return list1
        result=[]
        if n>1:
            for i in range(2,n+1):
                if sum(yinshu(i))==i:
                    result.append(str(i))
            print(' '.join(result))
    except:
        break
发表于 2019-08-08 14:53:46 回复(0)

python solution:

def isPerfect(n):
    res=[]
    for i in range(1,n):
        if n%i==0:
            res.append(i)
    return sum(res)==n
while True:
    try:
        res=[]
        a=int(input())
        for i in range(1,a+1):
            if isPerfect(i):res.append(i)
        print(" ".join(map(str,res)))
    except:
        break
发表于 2017-10-03 18:04:30 回复(0)

问题信息

难度:
2条回答 9247浏览

热门推荐

通过挑战的用户

查看代码
完数