zoukankan      html  css  js  c++  java
  • Python编程题3--找出1000以内的完全数

    题目

    如果一个数恰好等于它的因子之和,则称该数为“完全数”,又称完美数或完备数。例如:
    第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。
    第二个完全数是28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。
    请按照从小到大的顺序输出 1000 以内的完全数,并用"逗号"分隔输出结果

    实现思路

    • 用第一层 for循环 控制1000以内的数,标记 i ,并通过变量 sum 来控制 i 的所有除 i 外的约数之和
    • 用第二层 for循环 控制 i 以内的数,标记 j
    • 如果 i 能 整除 j ,那么 j 就是 i 的一个约数,如果 sum = i ,则表示 i 是完全数
    • 先把完全数转为字符串类型,再添加到列表中
    • 对结果进行处理,通过 join() 方法用 "," 拼接

    注意:使用 join() 拼接列表时,列表中的元素不能是 int 类型。

    代码实现

    def demo():
        result = []
        for i in range(1, 1000):
            sum = 0
            for j in range(1, i):
                if i % j == 0:
                    sum += j
            if sum == i:
                result.append(str(i))
        return ",".join(result)
    
    print("1000以内的完全数有:{}".format(demo()))
    
  • 相关阅读:
    [刷题] IDA*
    [BZOJ1330] Editing a Book
    [BZOJ5449] 序列
    [刷题] 搜索剪枝技巧
    [XJOI3529] 左右
    [CF920E] Connected Components?
    [第18届 科大讯飞杯 J] 能到达吗
    洛谷 P4779 【模板】单源最短路径(标准版)
    洛谷 P1175 表达式的转换
    pipioj 1291 中缀表达式转后缀表达式I
  • 原文地址:https://www.cnblogs.com/wintest/p/13508473.html
Copyright © 2011-2022 走看看