無意中看到介紹水仙花數,即乙個3位數的各位數字的3次方和等該數本身
實際上就是自冪數的一種,感覺有點意思,寫個指令碼試了下
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys, time
def deco(func):
def inner(*args, **kwargs):
b_time = time.time()
rlt = func(*args, **kwargs)
e_time = time.time()
print 'elapse:', e_time - b_time
return rlt
return inner
@deco
def daffodilnumber(bit):
rlt =
start, end = pow(10, bit - 1), pow(10, bit)
for i in range(start, end):
if isdaffodilnumber(i):
return rlt
def isdaffodilnumber(number):
tmp, rlt = 0, false
strnum = str(number)
for i in strnum:
tmp += pow(int(i), len(strnum))
if tmp == number:
rlt = true
return rlt
if '__main__' == __name__:
bit, lp = 0,
if len(sys.ar**) > 1:
bit = int(sys.ar**[1])
if bit > 2:
lp = daffodilnumber(bit)
print lp if len(lp) > 0 else none
執行結果:
python daffodilnumber.py 3:
elapse: 0.00112891197205
[153, 370, 371, 407] -- 所謂的水仙花數
python daffodilnumber.py 4:
elapse: 0.0163161754608
[1634, 8208, 9474]
python daffodilnumber.py 5
elapse: 0.187769174576
[54748, 92727, 93084]
python daffodilnumber.py 6
elapse: 2.18345785141
[548834]
python daffodilnumber.py 7
elapse: 25.2082297802
[1741725, 4210818, 9800817, 9926315]
python daffodilnumber.py 8
elapse: 293.154184818
[24678050, 24678051, 88593477]
9位開始就有點慢了。。還沒跑出結果,就這樣了
python求水仙花數 自冪數
首先,先了解什麼是水仙花數 水仙花數 narcissistic number 也被稱為超完全數字不變數 pluperfect digital invariant,ppdi 自戀數 自冪數 阿姆斯壯數或阿姆斯特朗數 armstrong number 水仙花數是指乙個 3 位數,它的每個位上的數字的 3...
求n位 水仙花數
n位水仙花數的範圍是 10n 1,10n 核心操作 2 1.如何得到每一位?a.核心思想 對得到的數進行先取餘後取整的迴圈操作。b.具體操作 用一變數g來得到將要判斷的值,用變數h來依次存放每一位,g取餘後把值賦給變數h,然後g再進行除10運算,如此迴圈往復,直到h依次得到每一位為止。2 2.如何將...
求n位水仙花數
求n位水仙花數 n位水仙花數的範圍是 10n 1,10n 核心操作 a.核心思想 對得到的數進行先取餘後取整的迴圈操作。b.具體操作 用一變數g來得到將要判斷的值,用變數h來依次存放每一位,g取餘後把值賦給變數h,然後g再進行除10運算,如此迴圈往復,直到h依次得到每一位為止。a.核心思想 呼叫ma...