1. 题目
题目:求出0 ~100000之间的所有“水仙花数”并输出。
“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身.
如:153 = 1 ^ 3 + 5 ^ 3 + 3 ^ 3, 则153是一 个"水仙花数"。
2. 代码
int main() {
int i = 0;
for (i = 0; i < 100001; i++) {
// 临时保存待计算的数
int temp = 0; // 153
// 记录temp中的每一位数 如:temp = 153,则 bit = 3, bit = 5, bit = 1
int bit = 0;
// 记录三次方和
int sum = 0;
// 记录temp是几位数 如:temp = 123, 则number = 3
int number = 0;
temp = i;
while (temp) {
number ++;
temp /= 10;
}
temp = i;
// 计算每一个数的三次方和
while (temp) {
// 记录当前数位
bit = temp % 10;
// 计算 number 次方和,并与 sum 相加
sum += pow(bit, number);
// 更新temp
temp /= 10;
}
// 判断 sum 与 当前数是否相等
if (sum == i) printf("%d\n", i);
}
return 0;
}
文章索引
后记
我水平有限,错误难免,还望各位加以指正。
本文内容到此结束,感谢您的阅读!!!如果内容对你有帮助的话,记得给我三连丫(点赞、收藏、关注)
本人博客所有文章,均为原创。部分文章中或引用相关资料,但均已著明来源出处。可随意转载、分享,但需加本文链接,以及版权说明。