四位数的吸血鬼数学

    static void SearchforVampireFromInternet() {
        String[] targetNum = null;
        String[] gunNum=null;   // 目标数字和枪数字(即对比数字)
        int sum = 0;   // 吸血鬼数字的总个数
        int count=0;   // 有效判断次数,那些乘积不是4位数的就排除了
        for (int i = 10; i < 100; i++) {
            for (int j = i+1; j < 100; j++) {   // 没有哪个两位数满足ab*ab=abab, 所以这里j从i+1开始就可以了
                int i_target = i * j;
                if (i_target < 1000 || i_target > 9999)
                    continue; // 积不是4位数则跳过
                count++;
                targetNum = String.valueOf(i_target).split("");  // 将其转换为一个字符串数组
                gunNum = (String.valueOf(i) + String.valueOf(j)).split("");
                java.util.Arrays.sort(targetNum);   // 升序排列,因为只有排列了再比较才能保证不遗漏abcd=ba*dc这样的情况
                java.util.Arrays.sort(gunNum);
                if (java.util.Arrays.equals(targetNum, gunNum)) {
                    // 排序后比较,为真则找到一组
                    sum++;
                    System.out.println("第" + sum + "个: " +  i_target+"="+i + "*" + j);
                }
            }
        }
        System.out.println("共进行了"+count+"次判断,找到" + sum + "个吸血鬼数字。");
    } /* Output:
    第1个: 1395=15*93
    第2个: 1260=21*60
    第3个: 1827=21*87
    第4个: 2187=27*81
    第5个: 1530=30*51
    第6个: 1435=35*41
    第7个: 6880=80*86
    共进行了3271次判断,找到7个吸血鬼数字。
    *///:~
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容