题目描述:
求出0~100000之间的所有“水仙花数”并输出。
“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=1^3+5^3+3^3,则153是一个“水仙花数”。
解题思路:
1.要求水仙花数就应该想到pow(x,n)函数,其中x表示该数的每一位数字,n表示该数有几位;
2.while循环计算出该数字有几位;
3.第二个while循环计算每位数的次方和sum,最后再判断sum是否等于该数。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<math.h>
int main() {
int temp = 0;
int i = 0;
for (i = 0; i < 100000; i++) {
int count = 0;
temp = i;
while (temp != 0) {
count++;
temp /= 10;
}
temp = i;
int sum = 0;
while (temp != 0) {
sum += pow(temp % 10, count);
temp /= 10;
}
if (i == sum) {
printf("%d ", i);
}
}
return 0;
}