用java寻找一些这样的四位数整数

用十进制 十二禁止 16进制 各位之和都为22的的程序,该如何设计?

这是利用循环暴力:

import java.util.ArrayList;
import java.util.List;

public class Main {
    public static List<Integer> findNumbers() {
        List<Integer> result = new ArrayList<>();

        for (int i = 1000; i < 10000; i++) {
            int decimalSum = getDecimalSum(i);
            int hexadecimalSum = getHexadecimalSum(i);
            int duodecimalSum = getDuodecimalSum(i);

            if (decimalSum == 22 && hexadecimalSum == 22 && duodecimalSum == 22) {
                result.add(i);
            }
        }

        return result;
    }

    private static int getDecimalSum(int num) {
        int sum = 0;
        while (num > 0) {
            sum += num % 10;
            num /= 10;
        }
        return sum;
    }

    private static int getHexadecimalSum(int num) {
        String hexString = Integer.toHexString(num);
        int sum = 0;
        for (char ch : hexString.toCharArray()) {
            sum += Character.digit(ch, 16);
        }
        return sum;
    }

    private static int getDuodecimalSum(int num) {
        String duodecimalString = Integer.toString(num, 12);
        int sum = 0;
        for (char ch : duodecimalString.toCharArray()) {
            sum += Character.digit(ch, 12);
        }
        return sum;
    }

    public static void main(String[] args) {
        List<Integer> numbers = findNumbers();
        System.out.println("和为22的这样的四位数有: " + numbers);
    }
}

输出结果为:

img

这个代码你可以试下:

public class NumberFinder {
    public static void main(String[] args) {
        findNumbersWithSum(22);
    }
    
    public static void findNumbersWithSum(int sum) {
        for (int i = 1000; i <= 9999; i++) {
            if (calculateSum(i, 10) == sum && calculateSum(i, 12) == sum && calculateSum(i, 16) == sum) {
                System.out.println("Number: " + i);
                System.out.println("Decimal: " + i);
                System.out.println("Duodecimal: " + Integer.toString(i, 12));
                System.out.println("Hexadecimal: " + Integer.toString(i, 16));
                System.out.println();
            }
        }
    }
    
    public static int calculateSum(int number, int base) {
        int sum = 0;
        while (number > 0) {
            sum += number % base;
            number /= base;
        }
        return sum;
    }
}