水仙花數(shù)即三位的自冪數(shù)。所謂自冪數(shù),就是指一個 n 位數(shù) ( n≥3 ),其每位上的數(shù)字的 n 次冪之和等于本身。
創(chuàng)新互聯(lián)建站于2013年開始,先為沂源等服務建站,沂源等地企業(yè),進行企業(yè)商務咨詢服務。為沂源企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。
所以水仙花數(shù),首先是三位數(shù),形式為abc,同時a,b,c的立方和值與原本數(shù)相同。
類似的還有
四位自冪數(shù):四葉玫瑰數(shù)
五位自冪數(shù):五角星數(shù)
六位自冪數(shù):六合數(shù)
等等。
對于水仙花數(shù)的判斷,需要按照以下步驟:
1 提取該數(shù)的個位,十位,百位值。
2 計算三個數(shù)的立方和。
3 與原值比較,如相等則是。
要輸出所有水仙花數(shù),需要:
1 對所有三位數(shù),即100到999遍歷;
2 對每個數(shù)判斷是否為水仙花數(shù),如是則退出。
當循環(huán)結束,所有的水仙花數(shù)就輸出成功了。
代碼如下:
int?isNarcissistic(int?n)
{
int?a?=?n/100;
int?b?=?n/10%10;
int?c?=?n%10;
return?a*a*a?+?b*b*b?+?c*c*c?==?n;
}
int?main()
{
int?i;
for(i?=?100;?i?1000;?i?++)
if(isNarcissistic(i))?printf("%d?",i);
}
輸出結果如下:
153?370?371?407
所謂的“水仙花數(shù)”是指一個三位數(shù)其各位數(shù)字的立方和等于該數(shù)本身,例如153是“水仙花數(shù)”,因為:153 = 1^3 + 5^3+ 3^3?。
下面是完整的C語言編程代碼:
運行結果:
result is:153? 370? 371? 407
擴展資料
常見水仙花數(shù)
水仙花數(shù)又稱阿姆斯特朗數(shù)。
1、三位的水仙花數(shù)共有4個:153,370,371,407;
2、四位的四葉玫瑰數(shù)共有3個:1634,8208,9474;
3、五位的五角星數(shù)共有3個:54748,92727,93084;
4、六位的六合數(shù)只有1個:548834;
5、七位的北斗七星數(shù)共有4個:1741725,4210818,9800817,9926315;
6、八位的八仙數(shù)共有3個:24678050,24678051,88593477
參考資料:百度百科:水仙花數(shù)
水仙花數(shù)是指一個 n 位數(shù) ( n≥3 ),每個位上的數(shù)字的 n 次冪之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)。
所以可以依次通過模除求得每個位上的值,然后做n次冪后相加,再判斷是否與本身相等,從而得到是否為水仙花數(shù)的結論。
以求所有三位數(shù)水仙花數(shù)為例,代碼如下,其它相似。
#includestdio.h
#includestdlib.h
#includestdbool.h
int?cube(const?int?n){//計算立方。如果是四位則是四次方,以此類推。
return?n*n*n;
}
int?isNarcissistic(const?int?n){//計算是否為水仙花數(shù)。
int?hundreds=n/100;//百位
int?tens=n/10-hundreds*10;//十位
int?ones=n%10;//個位
return?cube(hundreds)+cube(tens)+cube(ones)==n;//如果相等,則為水仙花數(shù)。
}
int?main(void){
int?i;
for(i=100;i1000;++i){//對所有三位數(shù)判斷。
if(isNarcissistic(i))//如果是則輸出。
printf("%d\n",i);
}
return?0;
}