首先,先了解什麼是水仙花數:
水仙花數(narcissistic number)也被稱為超完全數字不變數(pluperfect digital invariant, ppdi)、自戀數、自冪數、阿姆斯壯數或阿姆斯特朗數(armstrong number),水仙花數是指乙個 3 位數,它的每個位上的數字的 3次冪之和等於它本身(例如:1^3 + 5^3+ 3^3 = 153)。
水仙花數只是自冪數的一種,嚴格來說3位數的3次冪數才稱為水仙花數。
附:其他位數的自冪數名字
一位自冪數:獨身數
兩位自冪數:沒有
三位自冪數:水仙花數
四位自冪數:四葉玫瑰數
五位自冪數:五角星數
六位自冪數:六合數
七位自冪數:北斗七星數
八位自冪數:八仙數
九位自冪數:九九重陽數
十位自冪數:十全十美數
下面給出可以求到五角星數的方法,後面的一樣
其關鍵在於:
sum = sum + (temp % 10) ** num
temp = temp // 10
def narcissus(start, end):
num = 3
flag1 = 1000
flag2 = 10000
if start <100:
start = 100
if end <= 1000:
print("水仙花數為:")
sum_nar(start, end, num)
elif end <=10000:
print("水仙花數為:")
sum_nar(start, flag1, num)
print("四葉玫瑰數為:")
sum_nar(flag1, end, num + 1)
elif end <= 100000:
print("水仙花數為:")
sum_nar(start, flag1, num)
print("四葉玫瑰數為:")
sum_nar(flag1, flag2, num + 1)
print("五角星數為:")
sum_nar(flag2, end, num + 2)
else:
print("*****後續方法類似*****")
def sum_nar(begin, tonext, num):
for each in range(begin, tonext):
temp = each
sum = 0
while temp:
sum = sum + (temp % 10) ** num
temp = temp // 10
if sum == each:
print(each, sep='\n')
結果為:
>>> narcissus(100, 100000)
水仙花數為:
153370
371407
四葉玫瑰數為:
1634
8208
9474
五角星數為:
54748
92727
93084
求水仙花數
找出水仙花數 首先我們需要了解水仙花數的概念 在數論中,水仙花數 narcissistic number 也稱為自戀數 自冪數 阿姆斯壯數或阿姆斯特朗數 armstrong number 是指一n位數,其各個數之n次方和等於該數。例如153 370 371及407就是三位數的水仙花數,其各個數之立方...
求水仙花 ghpython 水仙花數02
今天咱們繼續來看看老潘微博裡的乙個python小案例,求水仙花數,這個小案例在前兩天已經分享了,今天分享另一種方法,常言道只要思想不滑坡,方法總比困難多,而且今天的方法個人覺得更pythonic一點。水仙花數 四葉玫瑰數 五角星數 由於2位數的自冪數不存在,這裡直接從100遍歷到100000 for...
python如何求水仙花數
水仙花數 narcissistic number 也被稱為超完全數字不變數 pluperfect digital invariant,ppdi 自戀數 自冪數 阿姆斯壯數或阿姆斯特朗數 armstrong number 水仙花數是指乙個 3 位數,它的每個位上的數字的 3次冪之和等於它本身。簡單來說...