问题描述:
求出0~100000之间的所有“水仙花数”并输出。
“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=1^3+5^3+3^3,则153是一个“水仙花数”。
#include <stdio.h>
int main()
{
int n = 0;
printf("输入这个数: ");
scanf("%d", &n);
printf("水仙花数有: \n");
for (n = 0; n < 999999; n++)
{
int a = n / 100000; //分解十万位
int b = (n % 100000) / 10000; //分解万位
int c = (n % 10000) / 1000; //分解千位
int d = (n % 1000) / 100; //分解百位
int e = (n % 100) / 10; //分解十位
int f = n % 10; //分解个位
//输入数是一位数
if (n >= 0 && n <= 9)
{
printf("%d ", n);
}
//输入数是两位数
else if (n >= 10 && n <= 99)
{
if (e * e + f * f == n)
printf("%d ", n);
}
//输入数是三位数
else if (n >= 100 && n <= 999)
{
if (d * d * d + e * e * e + f * f * f == n)
printf("%d ", n);
}
//输入数是四位数
else if (n >= 1000 && n <= 9999)
{
if (c * c * c * c + d * d * d * d + e * e * e * e + f * f * f * f == n)
printf("%d ", n);
}
//输入数是五位数
else if (n >= 10000 && n <= 99999)
{
if (b * b * b * b * b + c * c * c * c * c + d * d * d * d * d + e * e * e * e * e + f * f * f * f * f == n)
printf("%d ", n);
}
//输入数是六位数
else
{
if (a * a * a * a * a * a + b * b * b * b * b * b + c * c * c * c * c * c + d * d * d * d * d * d + e * e * e * e * e * e + f * f * f * f * f * f == n)
printf("%d ", n);
}
}
return 0;
}
程序结果: