快速尋找9位數內的自冪數

2021-10-02 17:41:07 字數 2388 閱讀 5412

首先了解自冪數的定義,自冪數是指乙個 n 位數,它的每個位上的數字的 n 次冪之和等於它本身。(例如:當n為3時,有1 ^ 3 + 5 ^ 3 + 3 ^ 3 = 153,153即是n為3時的乙個自冪數)

自冪數包括:獨身數、水仙花數、四葉玫瑰數、五角星數、六合數、北斗七星數、八仙數、九九重陽數、十全十美數。

先介紹基本的方法,**如下:

#include

#include

#include

#include

"nmec.h"

boolean isselfpower

(int num)

;int

intlen

(int num)

;boolean isselfpower

(int num)

return num == sum;

}int

intlen

(int num)

return cnt;

}int

main()

} endtime =

clock()

; deltatime = endtime - starttime;

printf

("耗時:%ld.%03lds"

, deltatime / clocks_per_sec, deltatime % clocks_per_sec)

;return0;

}

**中的標頭檔案 **「nmec.h」**內容如下:

#ifndef _nmec_h_

#define _nmec_h_

typedef

unsigned

char boolean;

#define true 1

#define false 0

#define not_found -1

#endif

按照這個方法尋找9位數內的自冪數, 所需時間很長,等了6分鐘就沒在等。 下面介紹一種可以在一分半內找出9位數內的自冪數,話不多說放**:

#include

#include

#include

"nmec.h"

const

int array[

10]=;

boolean isselfpower

(int num)

;int

intlen

(int num)

;int

numpower

(int a,

int p)

;boolean isselfpower

(int num)

return num == sum;

}int

intlen

(int num)

if(num >=

100000000

&& num <=

999999999)if

(num >=

10000000

&& num <=

99999999)if

(num >=

1000000

&& num <=

9999999)if

(num >=

100000

&& num <=

999999)if

(num >=

10000

&& num <=

99999)if

(num >=

1000

&& num <=

9999)if

(num >=

100&& num <=

999)

if(num >=

10&& num <=99)

return1;

}int

numpower

(int a,

int p)

intmain()

} endtime =

clock()

; deltatime = endtime - starttime;

printf

("耗時:%ld.%03lds"

, deltatime / clocks_per_sec, deltatime % clocks_per_sec)

;return0;

}

第二種方法程式執行結果如下:

由此可見,第二種方法出結果速度明顯加快。對於比較好的機子,可以將時間控制在一分半內。

至此,我的第一篇博文就此問世,在此感謝教主的教誨。

尋找自冪數(C )

include include using namespace std intmain if sum i 邏輯值表達為true時,表示自冪數 cout 求n位自冪數,請輸入位數 cin n cout 思路拓展 如果一種計算會被破壞 或改變 某個變數的值,而這個原始值在後面計算中又要被使用,那就將其賦...

求n位自冪數

無意中看到介紹水仙花數,即乙個3位數的各位數字的3次方和等該數本身 實際上就是自冪數的一種,感覺有點意思,寫個指令碼試了下 usr bin python coding utf 8 import sys,time def deco func def inner args,kwargs b time t...

尋找三位數

問題描述 將1,2,9共9個數分成三組,分別組成三個三位數,且使這三個三位數構成 1 2 3的比例,試求出所有滿足條件的三個三位數。例如 三個三位數192,384,576滿足以上條件。輸入格式 無輸入輸出格式 輸出每行有三個數,為滿足題設三位數。各行為滿足要求的不同解。public class ma...