赞
踩
1、首先初始化数字从1开始,另外初始化一个计数器从0开始
2、用Integer方法分别拿到每个数字的二进制、八进制、十进制、十六进制数
3、创造方法判断当前数字是否为哈沙德数
用BigInteger方法,截取当前每个进制数的每一位进行累加
4、调用所写方法算出当前数字的每个进制数的各个位数之和
5、判断每个进制之和是否能够和它十进制本身整除,数字不断递增,计数器不断累加,直到找到 第2023个哈沙德数,退出并输出幸运数字
- package com.xn.Mon;
-
- import java.math.BigInteger;
-
- public class Test {
- public static void main(String[] args) {
- int i = 1, count = 0;
- //死循环
- while (true) {
- String bin = Integer.toBinaryString(i);
- String oct = Integer.toOctalString(i);
- String dec = String.valueOf(i);
- String hex = Integer.toHexString(i);
-
- int binsum = sum(bin, 2);
- int octsum = sum(oct, 8);
- int decsum = sum(dec, 10);
- int hexsum = sum(hex, 16);
-
- if (i % binsum == 0 && i % octsum == 0 && i % decsum == 0 && i % hexsum == 0) {
- count++;
- }
- //退出循环条件
- if (count == 2023) {
- break;
- }
- i++;
- }
- System.out.println(i);
- }
-
- private static int sum(String numStr, int radix) {
- BigInteger ret = new BigInteger("0", radix);
- for (int i = 0; i < numStr.length(); i++) {
- BigInteger s = new BigInteger(numStr.substring(i, i + 1), radix);
- ret = ret.add(s);
- }
- return ret.intValue();
-
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。