求出0~100000之间的所有“水仙花数”并输出。
“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=1^3+5^3+3^3,则153是一个“水仙花数”。
在这个代码中。我们会用到一个pow函数,pow( x, n )表示 x^n 的值。
Count(x)函数用来计算数x的位数
IsNarcissus(x)函数用来判断一个数是否为水仙花数
#include<stdio.h>
#include<windows.h>
#include<math.h>
int Count(int x)
{
int count = 0;
while (x)
{
x /= 10;
count++;
}
return count;
}
int IsNarcissus(int x)
{
int old_data = x;
int count = Count(x);
int sum = 0;
while (x)
{
int temp = x % 10;
sum += (int)pow(temp, count);
x /= 10;
}
return sum == old_data;
}
int main()
{
int i = 0;
for (i = 0; i < 100000; i++)
{
if (IsNarcissus(i))
{
printf("%d ", i);
}
}
printf("\n");
system("pause");
return 0;
}