/*求出0~999之间的所有“水仙花数”并输出。
"水仙花数"是指一个三位数,其各位数字的立方和恰好等于该数本身,如:153=13+53+3^3.
*/
//思路:
//先通过求模取余的方法,的该数的各位;
//再将各位分别求立方;
//最后将求得的立方和相加,与原数比较是否相等.
#include<stdio.h>
#include<stdlib.h>
// 找水仙花数函数
void find_narcissistic_num(){
int n = 100; //水仙花数是三位数,所以从100开始
int sum = 0; //用来保存某一个三位数的各位数的立方和
int a, b, c; //定义三个变量,分别保存某一个三位数的各位
while (n < 1000){ //当n小于1000时
a = n % 10; //a等于三位数的个位数
b = n / 10 % 10; //b等于三位数的十位数
c = n / 100; //c等于三位数的百位数
sum = a*a*a + b*b*b + c*c*c; //sum等于某一个三位数的各位数的立方和
if (sum == n){ //如果sum等于n
printf("%d是水仙花数.\n", n); //打印输出水仙花数
}
++n; //n + 1;
}
}
//主函数
int main(){
find_narcissistic_num(); //调用找水仙花函数
system("pause"); //使程序暂停,等待输入任意键
return 0; //函数返回值为0
}