python基礎練習題(題目 一個數如果恰好等於它的因子之和,這個數就稱為"完數"。例如6=1+2+3.編程找出1000以內的所有完數)


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM