zoukankan      html  css  js  c++  java
  • 输出N以内的完整数

    描述:
        一个数如果恰好等于不包含它本身所有因子之和,这个数就称为"完数"。 例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。 编程序找出N之内的所有完数,并按下面格式输出其因子
    分析:
    第一次:超时50%。
        使用双重循环,第二层循环到当前第一层i值的i/2,这样每次将i%j==0的值加入列表,最终列表即是顺序的因子,计算因子和==当前值决定是否输出。
    
    第二次:正确。
        与第一次相比,这次循环到math.sqrt(i),大大减少运算量,当i%j==0是,j是因子,同理i/j也是因子,同时加入列表,最后需要list.sort()排序,再 计算因子和==当前值决定是否输出。需要注意的是本题中i/j都是4.0,5.0故要int(i/j),其次列表最后一定是本身,所以输出时要剔除最后一个值(最大值)
    代码:
    import math
     n=int(input())
     for i in range(5,n):
         fac=[]
         for j in range(1,int(math.sqrt(i))+1):
             if i%j==0:
                 fac.extend([j,int(i/j)])
         if sum(fac)-i==i:
             print(i,end=' ')
             fac.sort()
             for k in fac[:-1]:
                 print(k,end=' ')
             print() 
    补充:2020/1/19
    bug:没有考虑到例如25=5*5,用上述代码就会产生[1,25,5,5]的因子列表
  • 相关阅读:
    hdu5608 function
    Codeforces Round #535 (Div. 3) 解题报告
    HDU4746 Mophues
    HDU5663 Hillan and the girl
    AtCoder Beginner Contest 117 解题报告
    GDOI2018D2T1 谈笑风生
    BZOJ4018: 小Q的幻想之乡
    牛客寒假算法基础集训营6 解题报告
    win32拖拽编程
    项目开发中的贝塞尔曲线
  • 原文地址:https://www.cnblogs.com/thgpddl/p/12368450.html
Copyright © 2011-2022 走看看