首先知道什么是水仙花数?
1.“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=1^3+5^3+3^3,则153是一个“水仙花数”。
思路:
1.首先先确定这个数是几位数
2.得出每位上的数是多少
3.计算出每位数的n次方并相加
4.判断是否与原数相等,相等则为水仙花数并输出
代码实现:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <math.h>
int main()
{
int i = 0;
int temp = 0;
for (i = 0; i <= 100000; i++)
{
int count = 0;//归值
int sum = 0;//归值
temp = i;//归值
while (temp)
{
temp = temp / 10;//求有几位
count++;//每求一位指数+1
}
temp = i;//归值
while (temp)
{
sum = sum + pow(temp % 10, count);//计算每一位的n次方和
temp = temp / 10;//算完一次就舍去一位
}
if (sum == i)//判断是否与原数相等,相等则为水仙花数并输出
{
printf("%d ", i);
}
}
return 0;
}