代码改变世界

python基础练习题(题目 一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数)

2021-06-10 23:40  第二个卿老师  阅读(4616)  评论(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,直接定义一个求和的变量即可