完全数计算

完全数计算

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

完全数是:所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。
思路:
1)找出在n范围内的每个数(num)所有的因子
2)若因子列表不为空以及因子列表中前几个因子之和等于最后一个因子,则为完全数。

拿n=1000举例:

n=1000
total=0
for num in range(1,n+1):
    yinzi=[]
    for i in range(1,num+1):
        if num%i==0:
            yinzi.append(i)
    if yinzi and sum(yinzi[0:-1])==yinzi[-1]:
        total+=1
        print(yinzi)#输出因子列表,列表中最后一个值为完全数
print(total)

输出结果是:

[1, 2, 3, 6]
[1, 2, 4, 7, 14, 28]
[1, 2, 4, 8, 16, 31, 62, 124, 248, 496]
3

修改一下代码,即为最终答案:

import sys
for n in sys.stdin:
    n=int(n)
    total=0
    for num in range(1,n+1):
        yinzi=[]#因子列表
        for i in range(1,num+1):#i是分母不可为零,但i可为它本身
            if num%i==0:
                yinzi.append(i)
        if yinzi and sum(yinzi[0:-1])==yinzi[-1]:#若因子不为空且前几个因子相加等于最后一个数
            total+=1
    print(total)
全部评论

相关推荐

点赞 评论 收藏
分享
野猪不是猪🐗:把你的学校加黑,加粗,斜体,下划线,描边,内阴影,内发光,投影,外发光,再上渐变色,居中,放大到最大字号,再把简历里其它内容删了,就行了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务