算法2:寻找吸血鬼数(JS)

任务二:寻找吸血鬼数
打印所有4位吸血鬼数和它们的獠牙
提示:一共有7个;
吸血鬼数:
-该鬼的位数为偶数;
-该数的所有位中。是0的位少一半;
-该数每一位上的数字重新组合为两个位数相等的数,乘积正好等于该数。

例如:1260是吸血鬼数,他的獠牙是21和60.
-1260是4位数,4是偶数;
-1260中。是0的位数只有1个。少于一半'
-1260可以重新组合成21和60,这俩个数的位数想等都是2,21*60正好是1260。

复制代码
 1 function findVampireNumbers() {
 2     let sum = 0; // 记录找到的吸血鬼数的组数
 3 
 4     for (let i = 10; i < 100; i++) { // 第一个两位数
 5         for (let j = i + 1; j < 100; j++) { // 第二个两位数,大于第一个数
 6             let i_val = i * j; // 计算两个两位数的乘积
 7             if (i_val < 1000 || i_val > 9999) continue; // 排除乘积不是四位数的情况
 8 
 9             let ar_str1 = Array.from(String(i_val)); // 将乘积转换为字符数组
10             let ar_str2 = Array.from(String(i) + String(j)); // 将两个两位数拼接后转换为字符数组
11             ar_str1.sort(); // 对乘积的字符数组进行排序
12             ar_str2.sort(); // 对拼接后的字符数组进行排序
13 
14             if (JSON.stringify(ar_str1) === JSON.stringify(ar_str2)) {
15                 // 如果排序后的字符数组相等,则找到一组吸血鬼数
16                 sum++;
17                 console.log(`第${sum}组: ${i}*${j}=${i_val}`);
18                 console.log(`吸血鬼是${i_val},獠牙是${i}、${j}`);
19             }
20         }
21     }
22 
23     console.log(`共找到${sum}组吸血鬼数`);
24 }

代码解释:
这段代码用于寻找吸血鬼数。
函数findVampireNumbers中:
初始化变量sum为0,用于记录找到的吸血鬼数的组数。
使用两个嵌套的for循环遍历所有可能的两位数。
在循环中,计算两个两位数的乘积并存储在变量i_val中。
如果乘积不是四位数(范围在1000到9999之外),则继续下一轮循环。
将乘积转换为字符数组ar_str1,将两个两位数拼接后转换为字符数组ar_str2。
对字符数组进行排序。
如果排序后的字符数组相等,则找到一组吸血鬼数。增加sum的值,并打印出组号、乘法表达式和吸血鬼数。
循环结束后,打印出总共找到的吸血鬼数的组数。
通过这段代码,我们可以寻找并打印出所有满足条件的吸血鬼数及其组合。