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)) #分解后的表達式
017. 一個數如果恰好等于它的因子之和,這個數成為“完數”、例如6=1+2+3.編寫程序找出1000以內所有
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。