• 1000以内完全数(完美数)获取实现---基于python


    """
    题目:

    如果一个数恰好等于它的因子之和,则称该数为“完全数” 。各个小于它的约数(真约数,列出某数的约数,去掉该数本身,剩下的就是它的真约数)的和等于它本身的自然数叫做完全数(Perfect number),又称完美数或完备数。
    例如:
    第一个完全数是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
    那么问题来了:如何用python去求出下一个(大于28的)完全数?
    (求出1000以内所有的完全数)

    """

    #方法一

    # coding:utf-8
    a=range(1,1001)
    b=range(1,1001)
    result=[]
    for i in a:
    tmp=[]
    for k in b:
    if k<i:
    if not i%k:
    tmp.append(k)
    else:
    continue
    else:
    break
    count=0
    for m in tmp:
    count=count+m
    if count==i:
    result.append(i)
    else:
    continue
    print result


    上面的方法中,求tmp这个list中元素的和时,我们也可以通过sum函数实现,具体如下:
    #方法二
    # coding:utf-8
    a=range(1,1001)
    b=range(1,1001)
    result=[]
    for i in a:
    tmp=[]
    for k in b:
    if k<i:
    if not i%k:
    tmp.append(k)
    else:
    continue
    else:
    break
    count=sum(tmp)
    if count==i:
    result.append(i)
    else:
    continue
    print result

    #方法三
    #方法三是直接通过遍历出list a中的元素后,生成一个小于次元素的list,然后取余
    #对于range(1,0)我的解释是:range的理解应该是range是先用我们指定的条件生成一个列表,然后用for循环取出来(此句出自python核心编程第八章),range(1,0),start=1,stop=0,step=1,这样的条件生成的
    #的列表实际是上空的,即为False
    a=range(1,1001)
    perfect=[]
    for i in a:
    tmp=[]
    for k in range(1,i):
    if not i%k:
    tmp.append(k)
    count=sum(tmp)
    if count==i:
    perfect.append(i)
    print perfect

    #方法四(史上最简单的方式了)

    for i in range(1,1000):
      s=0
      for k in range(1,i):
        if i%k==0:
          s=s+k
      if i==s:
        print i



    我的猫在屋顶睡着了
  • 相关阅读:
    获取iframe中的元素
    用npm安装express后express命令找不到
    Openfire 单人聊天和多人聊天(发送消息、接收消息)
    openfire拦截数据包与发送广播
    xmpp with openfire 插件-利用Broadcast实现群
    Smack 结合 Openfire服务器,建立IM通信,发送聊天消息
    openfire默认数据库与应用系统数据库整合
    ios即时通讯客户端开发之-mac上安装MySQL
    ios即时通讯客户端开发之-mac上搭建openfire服务器
    IOS block使用中碰到的一个小坑
  • 原文地址:https://www.cnblogs.com/VseYoung/p/perfect_number_by_python.html
Copyright © 2020-2023  润新知