python求水仙花數 自冪數

2021-09-27 12:11:58 字數 1648 閱讀 9818

首先,先了解什麼是水仙花數:

水仙花數(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次冪之和等於它本身。簡單來說...