每日一言
信心这个东西,什么时候都像个高楼大厦,但是里面会长白蚁。 --沉默的大多数
题目
打印1~100000之间的所有的字幂数,中间用空格分隔
(字幂数是指一个数的位数的n次方之和等于这个数本身)
如:370= 3 ^ 3 + 7 ^ 3 + 0 ^ 3;
解法思路
- 用for循环递归1~100000
- 计算数字的位数n
- 计算该数的位数的n次方之和sum
- 判断sum与该数是否相等
- 如果相等,打印。
代码如下
#include<stdio.h>
#include<math.h>
int main()
{
int tmp = 0;
int n = 1;
int i = 0;
int sum = 0;
for (i = 1; i <= 100000; i++)
{
n = 1;
sum = 0;
tmp = i;
while (tmp/10)
{
n++;//位数
tmp /= 10;
}
tmp = i;
while (tmp)
{
sum += pow(tmp % 10, n);
tmp /= 10;
}
if (sum == i)
{
printf("%d ", i);
}
}
return 0;
}
运行结果
结语
请给自己些耐心,一口吃不成胖子。
山外青山楼外楼,莫把百尺当尽头。
想成为大佬那就保持空杯心态加油努力吧!
都看到这里啦!真棒(*^▽^*)
可以给作者一个免费的赞赞吗,这将会鼓励我继续创作,谢谢大家
编程小白写作,如有纰漏或错误,欢迎指正