自定义函数求n以内的所有完数_python

需求:

通过自定义函数的形式,满足用户输入一个正整数,求出1到n之间的所有完数。

运行效果:


 python代码:

n=int(input("请输入一个整数"))#将输入的字符串转成整形并赋值给变量n

data=[]#定义一个保存真因子的列表
nums=[]#定义一个保存完数的列表

def all_PrefectNum(n):
    
    
    for m in range(1,n+1):#从1开始取数 取到n m每取一个数交给下面判断
        
        
        data.clear()#每一次取数后清空一次列表 避免之前的列表中有数据
        
        
    
    
        #以下3行代码是先找该数的真因子 接着将该数的真因子添加到data集合
    
        for i in range(1,m):#i从1开始依次循环到m-1,例如输入6的话,i从1循环到5,在求完数的时候排除本身相除
            if m%i==0:#m依次除以1到m 如果余数为0即是整除(真因子)   
                data.append(i) #将找到的真因子添加到列表data
    
    
     
        #以下3行代码是判断该数是否是完数 如果是保存到nums列表
        
        s=sum(data)#将列表中的所有真因子求和
        if s==m:#如果所有真因子的和等于输入的数 则该数是完数 并将该完数保存到nums列表
            nums.append(m)#将该完数保存到nums列表
            
            
            
            
    
    
    #以下1行代码是输出信息
    print("{0}以内的所有完数:{1}".format(n,nums))#这里的n是输入的n 这里的nums是保存完数的列表           
            
all_PrefectNum(n)#调用函数                

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值