自冪數是指一個n位數,它的每個位上的數字的n次冪之和等於它本身
自冪數包括:獨身數、水仙花數、四葉玫瑰數、五角星數、六合數、北斗七星數、八仙數、九九重陽數、十全十美數
任意位數自冪數尋找完整代碼和注釋如下
#self power 自冪數 自冪數是指一個n位數,它的每個位上的數字的n次冪之和等於它本身 1~10位的自冪數都有各自的名稱
self_power_dict={
'1':'獨身數',
'2':'沒有自冪數',
'3':'水仙花數',
'4':'四葉玫瑰數',
'5':'五角星數',
'6':'六合數',
'7':'北斗七星數',
'8':'八仙數',
'9':'九九重陽數',
'10':'十全十美數',
}
def self_power(n):#n為位數
if n==2:
return print('兩位數沒有自冪數')
nums_range=[str(10**(n-1)),str(10**n-1)]#數字范圍
print('在{}范圍內,{}有:'.format('~'.join(nums_range),self_power_dict[str(n)]),end='')#格式化輸出
for num in range(10**(n-1),10**n):
number_list=[]#每位數字的列表
for x in range(n):#每位數字的位數
number_list.append(int(str(num)[x])**n)#在數字列表中添加每位數字的n次方值
if num==sum(number_list):#如果數字等於數字列表每位數字總和
print(num,end=' ')
self_power(3)#這種算法運算較慢 僅供參考