当前位置:   article > 正文

每天一道C语言精选编程题之自幂数

每天一道C语言精选编程题之自幂数
题目描述
写⼀个代码打印1~100000之间的所有的⾃幂数,中间⽤空格分隔。
解法思路
⾃幂数是指⼀个数的位数的n次⽅等于这个数本⾝。例如,153是⾃幂数,因为 1^3+5^3+3^3=153。
我们可以使⽤⼀个循环遍历 1~100000 并检查每个数是否为⾃幂数。
1. 计算 i 的位数 n;
2. 计算 i 的每⼀位的 n 次⽅之和 sum;
3. 判断 sum 与 i 是否相等,相等则 i 是⾃幂数。
注:可以使⽤ pow 函数求得某个数的次⽅数。
解法代码
  1. #include <stdio.h>
  2. #include <math.h>
  3. int main()
  4. {
  5. int i = 0;
  6. for (i = 1; i <= 100000; i++)
  7. {
  8. //判断i是否是⾃幂数
  9. //1. 计算i的位数n
  10. int n = 1;
  11. int tmp = i;
  12. while (tmp / 10)
  13. {
  14. n++;
  15. tmp /= 10;
  16. }
  17. //2. 计算i的每⼀位的n次⽅之和
  18. tmp = i;
  19. int sum = 0;
  20. while (tmp)
  21. {
  22. sum += (int)pow(tmp % 10, n);
  23. tmp /= 10;
  24. }
  25. //3. 输出
  26. if (sum == i)
  27. printf("%d ", i);
  28. }
  29. return 0;
  30. }

运行结果

1 2 3 4 5 6 7 8 9 153 370 371 407 1634 8208 9474 54748 92727 93084

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/1010602
推荐阅读
相关标签
  

闽ICP备14008679号