當前位置:編程學習大全網 - 編程語言 - 什麽是水仙花數?

什麽是水仙花數?

壹、水仙花數(Narcissistic number)也被稱為超完全數字不變數(pluperfect digital invariant, PPDI)、自戀數、自冪數、阿姆斯壯數或阿姆斯特朗數(Armstrong number),水仙花數是指壹個 3 位數,它的每個位上的數字的 3次冪之和等於它本身(例如:1^3 + 5^3+ 3^3 = 153)。

二、例題:求取100至100,000以內的所有水仙花數。

思路分析:

1、總體框架 

用for遍歷指定區間,判定當前循環變量i是否為水仙花數:是,則輸出到控制臺;問題細化為:判定某自然數i是否為水仙花數,具體過程由步驟2給出。

2、子框架:判定過程 

大致分兩步進行:

2.1、準備參數 

根據i,算得i的總位數D(digit);i中各位數的D次冪的和sum;

2.2、判定結果  

比較sum和i值的大小,結果傳給步驟1;

此時問題進壹步細化為:計算總位數D和各位數的D次冪之和sum,具體結果分別由步驟3、步驟4給出;

3、D的計算

用10累除n,其商截尾取整:n/=10,再放入while語句,統計商變為0時的總累除次數,該次數+1即為D;

4、sum的計算 

根據定義,只需利用for循環獲取自然數n的各位數的值,在用sum累加各位數的D次冪即可。

具體代碼:

運行結果:

擴展資料:

關於c語言水仙花數編程分析舉例

1、問題描述

輸出所有的“水仙花數”,所謂的“水仙花數”是指壹個三位數其各位數字的立方和等於該數本身,例如153是“水仙花數”,因為:153 = 13?+ 53?+ 33。

2、問題分析

根據“水仙花數”的定義,判斷壹個數是否為“水仙花數”,最重要的是要把給出的三位數的個位、十位、百位分別拆分,並求其立方和(設為s),若s與給出的三位數相等, 三位數為“水仙花數”,反之,則不是。

3、算法設計

“水仙花數”是指滿足某壹條件的三位數,根據這壹信息可以確定整數的取值範圍是 100?999。對應的循環條件如下:

4、對代碼的說明:

將n整除以100,得出n在百位上的數字hun;將(n-i*100)整除以10(或將n先整除以10再對10求模n/10%10),得出n在十位上的數字ten;將n對10取余,得出n在個位上的數字ind;求得這三個數字的立方和是否與其本身相等,若相等,則該數為水仙花數。

對於每個位置上的數值將其拆分的算法有很多種,根據不同情況選擇不同算法(對於同壹問題不同算法的效率有時會相差很多)。

下面是完整的代碼:

運行結果:

result is:153? 370? 371? 407

參考資料:

百度百科-水仙花數

  • 上一篇:誰有張晨曦計算機系統結構第四章練習題的答案?請送壹個。
  • 下一篇:工作要求會jv電腦基本操作,是指的什麽電腦軟件操作?
  • copyright 2024編程學習大全網