華文網

C語言入門:求100~999的水仙花數

水仙花數:是指一個n位元的正整數(n>=3),它的每個數字的n次冪之和等於它本身。

例如:

153=1*1*1+5*5*5+3*3*3 153為三位元數,它的每個數字的三次方之和等於153。

要求:用C語言實現求出100~999之間的所有水仙花數。

要驗證一個三位數是不是水仙花數很簡單,只要把它的三個數字的三次冪加起來,看看是否等於它本身即可。所以問題的關鍵是如何用C語言得到一個三位元數的三個數字。

我們知道任意一個三位數,都等於它的百位數乘以100,加上它的十位數乘以10,

再加上它的個位數乘以1 。比如:567=5*100+6*10+7*1 。

根據這一特性,我們可以得出,一個三位數的百位數就等於該數除以100的整數部分(567除以100的整數部分為5,即它的百位數是5),而十位數等於該數減去百位數乘以100再除以10的整數部分((567-5*100)再除以10的整數部分等於6,即該數十位數是6),而個位數就等於該數減去百位數乘以100,再減去十位數乘以10(567-5*100-6*10=7,個位數為7)。

代碼中關鍵部分做了詳細的注釋,代碼中的i++等價於i=i+1。編寫在visualstudio中的運行結果如下:

我們可以得知,100~999之間的水仙花數為:153,370,371,407

如果要求1000~9999之間的水仙花數呢?原理是一樣的,依次得到四位數的千位數、百位數、十位數和個位數即可。

自己動手試一試吧!