當前驗證的數為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來對三位數的水仙花數進行求解。首先我們要清楚的認識到三位數有很多,我們要一一對其進行檢驗,因此迴圈是我們...