一道编程题,给定一个元素都大于零的整数集合,编写函数,计算出如下条件的一个最大子集

给定一个元素都大于零的整数集合,编写函数,计算出如下条件的一个最大子集

  1. 子集中元素互不相等
  2. 子集中任意两个元素大者除以小者的余数为0

这个就是原题,没说传入什么参数,感觉应该是数组,
最好使用java

你这是没思路还是怎么滴?不是很明白你的情况


private static int[] getNums() {
        //测试数据,不重复,大于零就行
        int[] nums = {2,4,6,8,3,9,12,27,81};
        return nums;
    }
    
    public static void main(String[] args) {
        //生成一组大于0,不重复的整数
        int[] nums = getNums();
        
        //从小到大 排序
        Arrays.sort(nums);
        //查看排序结果
        for (int i = 0; i < nums.length; i++) {
            System.out.print(nums[i]+",");
        }
        System.out.println();
        
        //记录符合要求的最大元素数量
        int maxCount = 0;
        //记录符合要求的原素索引
        List<Integer> indexList = null;
        
        int tmpCount = 0;
        for (int i = 0; i < nums.length; i++) {
            for (int j = i + 1; j < nums.length; j++) {
                int tmp = nums[i];
                List<Integer> tmpIndexList = new ArrayList<>();
                if(nums[j] % tmp == 0){
                    tmp = nums[j];
                    
                    tmpCount = 2;
                    tmpIndexList.add(i);
                    tmpIndexList.add(j);
                    
                    for (int j2 = j + 1; j2 < nums.length; j2++) {
                        if(nums[j2] % tmp == 0){
                            tmp = nums[j2];
                            
                            tmpCount++;
                            tmpIndexList.add(j2);
                        }
                    }
                    
                }
                if(tmpCount > maxCount){
                    maxCount = tmpCount;
                    
                    indexList = tmpIndexList;
                }
            }
            
        }
        System.out.println("maxCount: " + maxCount);
        for (int i = 0; i < indexList.size(); i++) {
            System.out.print(nums[indexList.get(i)]+",");
        }
    }