水仙花数意思是一个三位数m,特点:
m=a^3+b^3+c^3 其中a为m的百位数,b为m的十位数,c为m的个位数,
如m=371 则有 a 为 3 b 为7 c 为 1
a,b,c如何求?
a为m的百位数: 首先把m的小数点后移两位,用m/100就可以了吧~
b为m的十位数:如何求十位?利用刚刚求出的百位数a,将m简化为一个十位数m-a*100 比如:371-3*100=71 这样再求这个十位数7就好求了。仍然利用小数点前移然后求整fix(71/10) 就求出b=fix(7.1)=7 c为m的个位:跟求b一样~利用先前求出的a与b,将m的十位,百位都减去就OK啦~~~~ 这样,a与b与c就都有了
如果m 满足这样的条件m=a^3+b^3+c^3 则m为一个水仙花数输出m 否则m不是一个水仙花数
程序:
#include
void main()
{
int a,b,c,i;
for(i=0;i<=999;i++)
{
a=i/100; b=i%100/10; c=i%10;
if(a*100+b*10+c==a*a*a+b*b*b+c*c*c)
printf("%d\n",i) ;
}
}