/*求出0~100000之间的所有“水仙花数”并输出。
“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=1^3+5^3+3^3,则153是一个“水仙花数”。*/
//这里start和end为需要求的区间[start,end],正数随便填,但要满足start<=end
void daffodilNumber(int start, int end){
//做判断,start<=end,start>=0,不满足,就是输入数据有误
if (start <= end&&start>=0){
//遍历到每一个数字
for (int i = start; i <= end; i++){
//先判断数有多少位
int count = 0; //统计一个数字有多少位
for (int j = i; j != 0; j /= 10){
count++;
}
//这是把每一位的n次方累加到compare里
int compare = 0;//最后要做比较的数字
int temp = i;
for (int k = 0; k < count; k++){
compare = compare + pow((temp % 10), count); //把数字每一位的count次方存入compare
temp /= 10;
}
//作比较
if (compare == i){
printf("%d为水仙花数\n", i);
}
}
}
else{
printf("输入数据有误!!!\n");
}
}
c语言输出水仙花数(所有正数)
最新推荐文章于 2022-12-21 18:05:56 发布