当前位置:   article > 正文

第2023个哈沙德数幸运数字查找(哈沙德数:每个进制的每一位之和都可以和它十进制数本身能够整除的数)_哈沙德数第2023个

哈沙德数第2023个

1、首先初始化数字从1开始,另外初始化一个计数器从0开始

2、用Integer方法分别拿到每个数字的二进制、八进制、十进制、十六进制数

3、创造方法判断当前数字是否为哈沙德数

        用BigInteger方法,截取当前每个进制数的每一位进行累加

4、调用所写方法算出当前数字的每个进制数的各个位数之和

5、判断每个进制之和是否能够和它十进制本身整除,数字不断递增,计数器不断累加,直到找到 第2023个哈沙德数,退出并输出幸运数字

  1. package com.xn.Mon;
  2. import java.math.BigInteger;
  3. public class Test {
  4. public static void main(String[] args) {
  5. int i = 1, count = 0;
  6. //死循环
  7. while (true) {
  8. String bin = Integer.toBinaryString(i);
  9. String oct = Integer.toOctalString(i);
  10. String dec = String.valueOf(i);
  11. String hex = Integer.toHexString(i);
  12. int binsum = sum(bin, 2);
  13. int octsum = sum(oct, 8);
  14. int decsum = sum(dec, 10);
  15. int hexsum = sum(hex, 16);
  16. if (i % binsum == 0 && i % octsum == 0 && i % decsum == 0 && i % hexsum == 0) {
  17. count++;
  18. }
  19. //退出循环条件
  20. if (count == 2023) {
  21. break;
  22. }
  23. i++;
  24. }
  25. System.out.println(i);
  26. }
  27. private static int sum(String numStr, int radix) {
  28. BigInteger ret = new BigInteger("0", radix);
  29. for (int i = 0; i < numStr.length(); i++) {
  30. BigInteger s = new BigInteger(numStr.substring(i, i + 1), radix);
  31. ret = ret.add(s);
  32. }
  33. return ret.intValue();
  34. }
  35. }

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

闽ICP备14008679号