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,直接定義一個求和的變量即可