首先解释一下水仙花数的概念:“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=1^3+5^3+3^3,则153是一个“水仙花数”。
1.先用for循环来遍历0~1000000之间的所有数字
2.每次遍历一个数字,就求出这个数字的位数。
3.用这个数模除10,得到它的每一位,在用这个数除以10的结果进行循环,直到这个数除以10的结果为0.再调用库函数pow来计算这个数每一位的位数次方和。
4.最后一步判断这个数每一位的位数次方和是否与这个数相等。相等即为水仙花数。
以下为具体的代码实现
#include <stdio.h>
#include <math.h>
intmain{
for (int num = 0; num < 100000; num++) {
int count = 1;
int n = num;
int sum = 0;
while (n / 10) {
count++;
n = n / 10;
}
n = num;
while (n) {
sum += pow(n % 10,count);
n = n / 10;
}
if (sum == num) {
printf("%d\n", num);
}
}
}