完全数计算

完全数计算

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)
全部评论

相关推荐

10-21 00:37
已编辑
山东大学 C++
小浪_Coding:你问别人,本来就是有求于人,别人肯定没有义务免费回答你丫, 有点流量每天私信可能都十几,几十条的,大家都有工作和自己的事情, 付费也是正常的, 就像你请别人搭把手, 总得给人家买瓶水喝吧
点赞 评论 收藏
分享
迷茫的大四🐶:💐孝子启动失败,改为启动咏鹅
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务