求40億以內的水仙花數(python)

2021-08-30 13:50:01 字數 1057 閱讀 3285

當前驗證的數為i

位數為d

每位上值的d次冪之和為sum

import time

start=time.clock() # 計時開始

list1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # 0-9的d次冪陣列快取表

sign = 1 # 標記,判斷是否現需要重寫快取表

sum1 = 1 # 上乙個數的sum值

print(1, end=" ")

for i in range(2, 4000000001):

str1 = str(i)

d = len(str1)

if d != sign: # 若位數不同於上乙個數,重寫快取表

sign = d # 重寫標記

list1 =

for x in range(10):

sum = 0 # 重置sum

if int(str1[d-1]) != 0: # 若最後一位數不是0

sum = sum1+list1[int(str1[d-1])]-list1[int(str1[d-1])-1] # 則sum等於sum1加上最後一位數的d次冪減去最後一位數減一的d次冪

else:

for n in range(d): # 將要計算從左到右第n+1個數的d次冪

# sum += int(str1[n])**d

sum += list1[int(str1[n])] # int(str1[n])為從左到右第n+1個數的值

sum1 = sum # 新值變舊值

if sum == i:

print(i, end=" ")

end=time.clock() # 計時結束

print()

print("final is in ", end-start) # 程式執行時間

執行了乙個小時四十五分鐘。。。。

有建議可以說一下,萬分感謝

求水仙花數

找出水仙花數 首先我們需要了解水仙花數的概念 在數論中,水仙花數 narcissistic number 也稱為自戀數 自冪數 阿姆斯壯數或阿姆斯特朗數 armstrong number 是指一n位數,其各個數之n次方和等於該數。例如153 370 371及407就是三位數的水仙花數,其各個數之立方...

求水仙花 ghpython 水仙花數02

今天咱們繼續來看看老潘微博裡的乙個python小案例,求水仙花數,這個小案例在前兩天已經分享了,今天分享另一種方法,常言道只要思想不滑坡,方法總比困難多,而且今天的方法個人覺得更pythonic一點。水仙花數 四葉玫瑰數 五角星數 由於2位數的自冪數不存在,這裡直接從100遍歷到100000 for...

python求水仙花數def 有趣的水仙花數

水仙花數 是指乙個三位整數,其各位數字的3次方和等於該數本身。例如 abc是乙個 3位水仙花數 則 a的3次方 b的3次方 c的3次方 abc。是不是很有趣!下面我們來介紹一下如何利用python來對三位數的水仙花數進行求解。首先我們要清楚的認識到三位數有很多,我們要一一對其進行檢驗,因此迴圈是我們...