当前位置:   article > 正文

C语言求1到10000的水仙花数_10000以内水仙花

10000以内水仙花

定义:水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。                     

这里我们认为n位数中,只要每位的n次方等于该数,该数便是一个水仙花数。

求解思路:1.由于不知道有几位数,所以首先我们先求出n位数确定的位数

                    2.在求余算出n位数的余数之后,利用pow(m,n)求m的n次方函数算出每位数的n次方

                    3.将每位数的n次方相加,判断是否等于该数;如果相等,则是水仙花数,否则不是

  1. //水仙花数:n位数每位数的n次方等于该数
  2. #define _CRT_SECURE_NO_WARNINGS 1
  3. #include <stdio.h>
  4. #include <windows.h>
  5. #include <math.h>
  6. int main()
  7. {
  8. int i = 1;
  9. //110000的水仙花数
  10. for (i = 1; i <= 10000; i++)
  11. {
  12. int count = 1; //水仙花数至少是一位
  13. int tmp = i;
  14. int sum = 0;
  15. //1.判断位数
  16. while (tmp / 10)
  17. {
  18. count++;
  19. tmp = tmp / 10;
  20. }
  21. tmp = i; //while循环后已改变tmp值,所以tmp需要重新被赋值
  22. //2.求和
  23. while (tmp) //保证最高位的n次方不被丢掉
  24. {
  25. sum += pow(tmp % 10, count); //pow(float x,float y):求次方函数(x的y次方)
  26. tmp = tmp / 10;
  27. }
  28. if (i == sum)
  29. {
  30. printf("%d ", i);
  31. }
  32. }
  33. system("pause");
  34. return 0;
  35. }

 

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

闽ICP备14008679号