输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,153是一水仙花数,因为153=1^3+5^3+3^3
#include <stdio.h>
int main() {
// 输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。
// 例如,153是一水仙花数,因为153=1^3+5^3+3^3
int n;
printf("请输入你想知道水仙花数的位数,n>=3\n");
scanf("%d",&n);
//先知道求水仙花的范围
int range = 1;
int i = 1;
while(i<n){
range*=10;
i++;
}
//printf("%d\n",range);
//遍历range到range*10中的所有数字
i=range;
while(i<range*10){
//用一个空盒子来装每次遍历的数字
int t = i;
int sum = 0;
while(t>0){
int d = t % 10;
t /= 10;
//用一个空盒子来装d的数字
int p = d;
//计算每个位上的数字的N次幂之和
for(int j = 1;j<n;j++){
p *= d;
}
sum += p;
}
if(sum == i){
printf("%d位的水仙花数有:%d\n",n,i);
}
i++;
}
return 0;
}