python基础练习题(题目 一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数)
2021-06-10 23:40 第二个卿老师 阅读(4800) 评论(2) 编辑 收藏 举报day12
---------------------------------------------------------------
实例019:完数
题目 一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。
分析:如果能被a整除,那么a是因子,放入一个列表然后再求和,与原被除数相等,就是完数
1 for i in range(1,int(a)): 2 list = [] 3 if i >1: 4 for j in range(1,i): 5 if i%j == 0: 6 list.append(j) 7 if sum(list) ==i: 8 print(f"{i}是完数")
看看答案:
1 def factor(num): 2 //target=int(num) 3 res=set() 4 for i in range(1,num): 5 if num%i==0: 6 res.add(i) 7 res.add(num/i) 8 return res 9 10 for i in range(2,1001): 11 if i==sum(factor(i))-i: 12 print(i)
答案定义了一个返回某个数所有的因子的函数,再在函数外判断是否为完数,还是很好理解。我这个也可以不用列表再sum,直接定义一个求和的变量即可