017. 一個數如果恰好等于它的因子之和,這個數成為“完數”、例如6=1+2+3.編寫程序找出1000以內所有

def pri_num(val): #求出該數字的所有素數
for i in range(2,val+1):
if i<=4:
j=i
else:
j=i//2
for k in range(2,j):
if i%k==0:
break
else:
num.append(i)
def sol_factor(val,k): #求因數
for i in k: #遍歷素數
if val%i==0:
return i
break
else:
return 1
for input_num in range(2,1000):
sum_num=1
num=[] #該數字范圍內的所有素數
fac_num=[] #該數字的因數
pri_num(input_num) #求出該數字的所有素數
decom_num=input_num #要分解的數
while True:
res=sol_factor(decom_num,
num)
if res==decom_num: #遍歷結束
sum_num +=res
fac_num.append(str(res))
break
else:
sum_num +=res
fac_num.append(str(res))
decom_num= decom_num/res
if sum_num==input_num:
print(input_num,'=1+','+'.join(fac_num)) #分解后的表達式

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 轉眼間畢業兩年了,朋友圈里高中老師發出了高三學子高考前最后一次角逐的模考照片,今年大學畢業的學弟學妹們曬出了史上最...
    Mr_康先生閱讀 520評論 1 9
  • 三毛說,“讀書多了,容顏自然改變,許多時候,自己可能以為許多看過的書籍都成過眼煙云,不復記憶,其實它們仍潛在氣質里...
    內寒閱讀 177評論 0 0