需求:
通过自定义函数的形式,满足用户输入一个正整数,求出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)#调用函数