用Python找出10000以內的完數


#!/usr/bin/python
# -*- coding utf-8 -*-

#題目:一個數如果恰好等於它的因子之和,這個數就稱為"完數"。例如6=1+2+3.編程找出10000以內的所有完數。
# 1不是完數。
yinzilist = []
singleyinzi = []
tim = 10000

for i in range(1,tim+1):
singleyinzi = []
# 被整除的都是因子。
for kk in range(1,i):
if kk==1:
singleyinzi.append(kk)
elif (i%kk)==0:
singleyinzi.append(kk)
else:
pass
if len(singleyinzi)>0:
#某個數的因子,全部求出來了。現在來判斷是不是完數。
tmpsum =0;
tmpstr =''
for si in singleyinzi:
tmpsum = tmpsum+si
tmpstr = tmpstr + str(si)+ ' + '
if tmpsum ==i:
print("當前的數是完數,"+str(i) +' = '+ tmpstr[:-3])
yinzilist.append(i)

#print('當前的數是:{0}'.format(i))
#print('因子是:{0}'.format(singleyinzi))
#yinzilist.append(singleyinzi)

print('一共有這么幾個完數 = {0}'.format(yinzilist))


免責聲明!

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



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