求出0~10000之间的所有“水仙花数”并输出。
“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=1^3+5^3+3^3,则153是一个“水仙花数”。
int main()
{
int K = 10000;
int i = 0;
printf("0是一个水仙花数\n");
for (i = 0; i <= K; i++)
{
int tmp = 0;//位数
int num = i;
while (num)
{
num /= 10;
tmp++;
}
int sum = 0;
int a = i % 10 / 1;
int b = i % 100 / 10;
int c = i % 1000 / 100;
int d = i / 1000;
int j = 0;
int sum1 = 1;
int sum2 = 1;
int sum3 = 1;
int sum4 = 1;
for (j = 0; j < tmp; j++)
{
sum1 *= a;
}
for (j = 0; j < tmp; j++)
{
sum2 *= b;
}
for (j = 0; j < tmp; j++)
{
sum3 *= c;
}
for (j = 0; j < tmp; j++)
{
sum4 *= d;
}
sum = sum1 + sum2 + sum3 + sum4;
if (i == sum)
{
printf("%d是一个水仙花数\n", sum);
}
}
return 0;
}

1355

被折叠的 条评论
为什么被折叠?



