求n位自冪數

2021-09-26 21:06:52 字數 1635 閱讀 9035

無意中看到介紹水仙花數,即乙個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...